我决定尝试将我的项目从使用GitSharp迁移到LibGit2Sharp,因为不再主动维护GitSharp.使用GitSharp,我能够在给定分支的情况下访问检查到我的仓库中的任何文件的原始字节.我无法使用LibGit2Sharp找到任何文档或示例代码.
有人能给我以及如何做到这一点的例子吗?
使用libgit2sharp我想做以下事情:
foreach( Commit commit in repo.Commits )
{
// How to implement assignedTags?
foreach( Tag tag in commit.assignedTags ) {}
}
Run Code Online (Sandbox Code Playgroud)
我想将所有标签分配给当前提交.什么是最好的方法呢?迭代所有标签,看看是否tag.Target.Sha == commit.Sha?多数表现不太好.还有另外一种方法吗?
我已经环顾四周,因为我不是安全或加密专家,我仍然对如何在我的程序中实现加密感到困惑.我需要一台服务器登录其gitHub帐户以更新带有特殊标头的代码文件.我现在唯一的挂断是如何存储/检索服务器的凭据.
PushOptions push = new PushOptions
{
Credentials =
new UsernamePasswordCredentials
{
Password = "password",
Username = "Username"
}
};
Run Code Online (Sandbox Code Playgroud)
我如何加密这些凭据以进行存储?我知道将它们存储在代码中是一个坏主意,就像示例那样,并且将它们存储在未加密的任何文件中也是一个坏主意.
此外,我想要的唯一用户交互是在服务器上编译和设置程序时发生的.它是Linux服务器上的cronjob,以防万一.需要注意的另一个细节是,我使用的是libgit2sharp,但之前使用的是bash脚本和ssh进行身份验证以进行测试.
我刚刚下载了libgit2sharp的nugget包.我发现即使是基本的操作也很难.
我有一个现有的git仓库(远程和本地).我只需要在它发生时提交新的更改并将其推送到远程.
我有下面的代码来解释我做了什么.
string path = @"working direcory path(local)";
Repository repo = new Repository(path);
repo.Commit("commit done for ...");
Remote remote = repo.Network.Remotes["origin"];
var credentials = new UsernamePasswordCredentials {Username = "*******", Password = "******"};
var options = new PushOptions();
options.Credentials = credentials;
var pushRefSpec = @"refs/heads/master";
repo.Network.Push(remote, pushRefSpec, options, null, "push done...");
Run Code Online (Sandbox Code Playgroud)
我应该在哪里指定远程网址?这也是做这些操作(提交和推送)的正确方法吗?
谢谢
我试图使用libgit2sharp库.我唯一的代码是
Repository repository = new Repository(@"C:\Path\To\Repo");
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到一个错误,说无法加载DLL'git2':找不到指定的模块.所以,我手动去抓取libgit2sharp中的git2.dll并将其移动到目录中.之后运行相同的程序时,我收到另一个错误:尝试加载格式不正确的程序.
在研究这篇文章的过程中,我发现这篇文章和解决方案似乎对海报有用,但对我来说并没有用.这个帖子也是在一年前制作的,并且为它做了一个假定的修复,我使用libgit2sharp的最新分支(香港专业教育学院尝试过较旧的存储库没有变化)
有任何想法吗?
我计划用我的插件(一个 Visual Studio 2012 扩展)替换git.exefrom windows 路径的用法,以在当前文件的边缘显示 Git Diff。- https://github.com/laurentkempe/GitDiffMarginlibgit2sharpGitDiffMargin
我想知道是否有等效的方法libgit2sharp可以使用 来启动外部 difftool git difftool -y filename?
使用 libgit2sharp 我正在合并来自两个用户的更改:
public void Merge(string branchName)
{
using (Repository repo = new Repository(this._settings.Directory))
{
var branch = repo.Branches[branchName];
MergeOptions opts = new MergeOptions() { FileConflictStrategy = CheckoutFileConflictStrategy.Merge };
repo.Merge(branch, this._signature, opts);
if (repo.Index.Conflicts.Count() > 0)
{
//TODO: resolve conflicts
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使将策略设置为合并,冲突仍然会出现。我找不到解决冲突的方法。Conflict 对象没有 Resolve 方法。
除了删除文件或重命名文件之外,有没有办法解决代码冲突?有没有自动解析功能?
感谢您的任何帮助!
最近我一直在使用 git stash 很多次,我一直在想它真的很慢,即使在一个只有一个文件的新存储库上也是如此。我读过这个问题,大约GIT中藏匿缓慢而这另一个而想尽回答这些问题,但没有任何实际工作。
例如,我已经完成了以下步骤来重现它:
git inittouch file.txtvim file.txt (编辑文件添加 2 行)git add .git commit -m "Initial commit"vim file.txt (再次编辑添加1行)time git stash输出:
$ time git stash
Saved working directory and index state WIP on master: b9454ed Initial commit
HEAD is now at b9454ed Initial commit
real 0m8.042s
user 0m0.000s
sys 0m0.046s
Run Code Online (Sandbox Code Playgroud)
8 秒存储一条线的时间太长了。现在使用 libgit2sharp 进行测试:
static void Main(string[] args)
{
Repository repo=new Repository(@"C:\Users\UserTest\TestGitRepo");
repo.Stashes.Add(new Signature("test", "test@test.com", new DateTimeOffset(DateTime.Now)), "Stash …Run Code Online (Sandbox Code Playgroud) 使用libgit2sharp我想从一个特定的 git 远程分支拉(fetch + merge)最新到我当前签出的本地分支,而不必传递任何其他参数,比如用户凭据等。基本上我试图复制git pull origin my-remote-branch
我想从 C# 自动化某些 Git 操作。我可以通过调用git.exe(如果我知道路径)简单地做我想做的事,比如git.exe --git-dir=my-repo-directory pull origin my-remote-branch. 请注意,这里我必须提供的唯一外部参数是my-repo-directory和my-remote-branch。Git 让一切都正确,比如姓名、密码、电子邮件、当前工作分支(即使它没有远程连接),而 git pull 就可以正常工作。我不必手动传递任何这些参数。我假设 Git 从 repo 的当前 Git 设置中获取它们(来自 %HOME% 文件夹?)。
有没有办法在 LibGit2Sharp 中模拟它?
using (var repo = new Repository("my-repo-directory"))
{
PullOptions pullOptions = new PullOptions()
{
MergeOptions = new MergeOptions()
{
FastForwardStrategy = FastForwardStrategy.Default
}
};
MergeResult mergeResult = Commands.Pull(
repo,
new …Run Code Online (Sandbox Code Playgroud) 希望有人打电话帮助。首先,我对 git 很陌生,所以如果我在解释我的问题时犯了一些错误,请原谅我。
我想使用 libgit2sharp 使用库将存在的源代码拉到特定的提交。所以如果有历史
我希望能够提取 5 或该列表中的任何其他数字的源代码。任何源都不会被标记,所以我必须使用提交来进行拉取。希望有人可以提供帮助。
我看过https://github.com/libgit2/libgit2sharp/wiki/git-pull但它似乎没有让我传入 sha 或提交 ID。
编辑我的问题以明确我正在使用图书馆。
libgit2sharp ×10
c# ×7
git ×4
libgit2 ×3
.net ×1
encryption ×1
git-pull ×1
gitsharp ×1
mono ×1
pull ×1