标签: libgit2sharp

如何检索文件的历史记录?

我得到了另一个libgit2问题,非常感谢你的帮助.

我正在尝试检索文件历史记录,即更改此文件的提交列表.而且它似乎非常传统......据我所见,没有任何功能.

我能想到的唯一方法是使用版本控制API迭代修订版本,检查附加到提交的树对象并在那里搜索给定文件,如果找到,则将提交添加到我的列表中,否则继续下一次提交.

但它对我来说似乎不是最理想的......

可能是有任何其他方法,例如,直接查看.git文件夹并获取所需信息吗?

提前谢谢了!

git history libgit2 libgit2sharp

21
推荐指数
1
解决办法
3523
查看次数

如何使用LibGit2Sharp获取当前/活动分支?

所以使用LibGit2Sharp https://github.com/libgit2/libgit2sharp你可以像这样走过分支

using (var repo = new Repository(@"path to .git"))
{
    foreach (var branch in repo.Branches)
    {
        Debug.WriteLine(branch.Name);   
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如何获得当前/活动分支?

.net git libgit2sharp

16
推荐指数
1
解决办法
2674
查看次数

16
推荐指数
3
解决办法
3625
查看次数

Git存储库内部格式解释

有没有关于Git如何在其存储库中存储文件的文档?我试图通过互联网搜索,但没有可用的结果.也许我正在使用不正确的查询或者这可能是一个很大的秘密 - Git存储库内部格式?

让我解释一下,为什么我需要这个火箭科学信息:我正在使用C#来获取文件历史表格存储库.但是在libgit2sharp图书馆里,目前尚未实施.所以(作为一个负责任的人;)我需要自己实现这个功能,并为社区做出贡献.

但是在将内核源代码移动到github后,我甚至不知道从哪里开始搜索.

提前谢谢了!

c# git github libgit2 libgit2sharp

13
推荐指数
1
解决办法
6167
查看次数

从LibGit2Sharp中的提交中获取已修改/添加/删除的文件

我有这个方法,我从上次提交中获取文件:

static void GetFiles(Tree t, String dir = "")
{
    foreach (TreeEntry treeEntry in t)
    {
        if (treeEntry.TargetType == TreeEntryTargetType.Tree)
        {
            Tree tr = repo.Lookup<Tree>(treeEntry.Target.Sha);
            GetFiles(tr, dir + "/" + treeEntry.Name);
        }
        else
        {
            string caminho = dir + "/" + treeEntry.Path;
            arquivos.Add(caminho);
        }

    }
    return;
}
Run Code Online (Sandbox Code Playgroud)

我看了一下这个问题,但我是C#的新手并且不明白.

我有这个存储库:

c:/teste
| - octocat.txt
| - parentoctocat.txt
| - /outros
| | - octocatblue.txt
| | - octored.txt
Run Code Online (Sandbox Code Playgroud)

我上次提交修改了这些文件:

c:/teste
| - /outros
| | - octocatblue.txt <- This …
Run Code Online (Sandbox Code Playgroud)

c# git libgit2sharp

12
推荐指数
1
解决办法
2882
查看次数

C#从Azure应用服务将文件推送到Bitbucket存储库?

我想将文件从Azure App Service上的文件夹推送到Git存储库.

我已将本地git repo复制到服务器,我使用LibGit2Sharp提交并推送这些文件:

using (var repo = new Repository(@"D:\home\site\wwwroot\repo"))
{
    // Stage the file
    Commands.Stage(repo, "*");

    // Create the committer's signature and commit
    Signature author = new Signature("translator", "example.com", DateTime.Now);
    Signature committer = author;

    // Commit to the repository
    Commit commit = repo.Commit($"Files updated {DateTime.Now}", author, committer);

    Remote remote = repo.Network.Remotes["origin"];
    var options = new PushOptions
    {
        CredentialsProvider = (_url, _user, _cred) =>
            new UsernamePasswordCredentials
            {
                Username = _settings.UserName,
                Password = _settings.Password
            }
    };
    repo.Network.Push(remote, @"+refs/heads/master", options);
} …
Run Code Online (Sandbox Code Playgroud)

git bitbucket azure libgit2sharp

12
推荐指数
1
解决办法
529
查看次数

什么是git日志路径的LibGit2Sharp等价物?

如何获取包含特定文件的提交列表,即等效git log pathLibGit2Sharp.

它没有实施,还是有一种我失踪的方式?

c# git libgit2 libgit2sharp

9
推荐指数
3
解决办法
2347
查看次数

如何使用libgit2sharp创建从本地到远程的新分支?

我想使用libgit2sharp在git上创建和删除分支.我提出了这个代码,但它会抛出一个错误repo.Network.Push(localBranch, pushOptions);

using (var repo = new Repository(GIT_PATH))
{
    var branch = repo.CreateBranch(branchName);

    var localBranch = repo.Branches[branchName];

    //repo.Index.Stage(GIT_PATH);
    repo.Checkout(localBranch);
    repo.Commit("Commiting at " + DateTime.Now);

    var pushOptions = new PushOptions() { Credentials = credentials };

    repo.Network.Push(localBranch, pushOptions); // error

    branch = repo.Branches["origin/master"];
    repo.Network.Push(branch, pushOptions);
}
Run Code Online (Sandbox Code Playgroud)

错误消息是 The branch 'buggy-3' ("refs/heads/buggy-3") that you are trying to push does not track an upstream branch.

我尝试在互联网上搜索此错误,但我发现没有解决方案可以解决问题.是否可以使用libgit2sharp执行此操作?

c# git libgit2sharp

9
推荐指数
1
解决办法
3942
查看次数

使用libgit2sharp在提交及其父级之间进行更改

我正在使用libgit2sharp(libgit2的C#包装器)并且一直在遇到问题,因为它没有很多我希望的功能(希望我能尽快做出贡献;这看起来像是一个非常有用的项目)

我现在要做的是获取从特定提交及其父级更改的文件列表.我不会试图找出合并与其两个父母之间的变化.我对常规提交更感兴趣.

这些家伙(https://github.com/libgit2/libgit2sharp/issues/89)正在研究类似的东西.我认为他们的程序是一个合理的想法,但我对GIT内部的理解有点弱(最终用户的GIT指南有很多指南,但内部结构却没有那么多)

我很好奇GIT本身如何执行"git diff"命令.据说GIT实际上并不存储增量,而是文件的完整版本(如果它没有改变,它只会指向现有的SHA.这些信息可以从各种来源找到,例如http://xentac.net/2012/01 /19/the-real-difference-between-git-and-mercurial.html).这似乎使得更难以在两次提交之间进行更改(在我的情况下是特定提交及其单个父级),因为数据不是作为提交的一部分存储的(如果您检查libgit2sharp的Commit.cs中的Commit类,这很明显)文件).

我可以通过提交访问的是树.是否有必要执行以下操作以查找此信息:

1)从所需的提交开始,然后沿着树向下走,并将所有SHA值存储在一个集合中.

2)从父级开始进行所需的提交,然后沿着其树向下移动,将其所有blob SHA值存储在另一个集合中.

3)更改文件的SHA将是不在两组交集中的文件.

我用这种方法看到的问题是它看起来没有办法从blob的SHA值中获取文件名(我没有看到任何可以在libgit2sharp的Blob.cs文件中执行此操作).

我知道这个问题有很多方面,但它们是从git获取特定数据的大目标的一部分.

谢谢.

git libgit2 libgit2sharp

8
推荐指数
1
解决办法
4357
查看次数

有没有用libgit2,libgit2sharp,Ngit用msysgit替换windows?

嗨,我喜欢Git,但似乎与人和朋友分享Windows项目并不好玩,因为与tortoisehg或tortoisesvn(不是它的DVCS)相比,gitextensions tortoisegit开箱即用是丑陋的.在bash shell中使用msysgit并不像linux/Mac那样好.

那么有没有新的竞争者(alpha项目等(甚至与其他libs))?

我很想看到这些新的Git库腾飞!

windows git libgit2 libgit2sharp

8
推荐指数
1
解决办法
2244
查看次数

标签 统计

libgit2sharp ×10

git ×9

c# ×5

libgit2 ×5

.net ×2

azure ×1

bitbucket ×1

github ×1

history ×1

windows ×1