标签: libgit2

如何找到具有特定父级的所有提交?

如何在具有特定父级的存储库中找到所有提交?

例如,如果我有一个 commit A,我想找到与A. 在 LibGit2Sharp 中执行此操作的最有效,即高性能但正确的方法是什么?

git libgit2 libgit2sharp

5
推荐指数
1
解决办法
1329
查看次数

5
推荐指数
1
解决办法
560
查看次数

libgit2(获取 & 合并 & 提交)

我正在尝试从 libgit2 的 repo 中提取。

我的步骤是这些:

  • git_remote_connect - 好的
  • git_remote_download 还是我应该使用 git_remote_fetch ?
  • git_remote_ls 获取 HEAD 的传递给 git_annotated_commit_from_fetchhead (这是 coorect 吗?)。但是有 1 个以上的头,我可以通过带有“HEAD”名称的头吗?
  • git_merge。

这导致 .git 文件夹中的 MERGE_HEAD ,然后我可以与现有提交合并。

问题是,上面的顺序是否正确?为什么 git 创建 FETCH_HEAD 而 libgit2 有 MERGE_HEAD?

libgit2

5
推荐指数
1
解决办法
1598
查看次数

任何基于 libgit2 的本地 git 命令行工具?

作为libgit2是一个库,是有其取决于libgit2并且暴露出通常GIT中的命令行接口(像任何现有的C / C ++项目git clonegit commit等等)?

libgit2

5
推荐指数
2
解决办法
899
查看次数

libgit2 支持哪些传输协议进行克隆?

我正在编写一个程序,它可以使用 Git 克隆 URI 并在用户机器上克隆存储库。为此,程序需要知道什么时候可以继续克隆,什么时候需要放弃。git-clone手册页说:

Git 支持 ssh、git、http 和 https 协议(此外,ftp 和 ftps 可用于获取,rsync 可用于获取和推送,但这些低效且已弃用;请勿使用它们)。

libgit2 支持多少?

我知道至少他们支持HTTP、 HTTPS 和SSH但其他的呢?

libgit2

5
推荐指数
1
解决办法
297
查看次数

如何通过 cmake 包含 libgit2

我如何将 libgit2 作为库包含在 cmake 中。我已经从 github 克隆了 libgit2 存储库。比我跑的

mkdir build && cd build
cmake ..
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

我在 /usr/local/include/git2/ 和 /usr/local/include 下找到了安装的文件。

我现在必须在我的 cmake 文件中放入什么?

cmake libgit2

5
推荐指数
1
解决办法
1666
查看次数

与 Libgit2 相比,Windows 上的 Git 存储速度非常慢

最近我一直在使用 git stash 很多次,我一直在想它真的很慢,即使在一个只有一个文件的新存储库上也是如此。我读过这个问题,大约GIT中藏匿缓慢而这另一个而想尽回答这些问题,但没有任何实际工作。

例如,我已经完成了以下步骤来重现它:

  1. git init
  2. touch file.txt
  3. vim file.txt (编辑文件添加 2 行)
  4. git add .
  5. git commit -m "Initial commit"
  6. vim file.txt (再次编辑添加1行)
  7. 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)

c# git libgit2 libgit2sharp git-for-windows

5
推荐指数
1
解决办法
1047
查看次数

如何使用 libgit2sharp 获取后面/前面的提交数量?

可以使用git rev-list命令获取后面/前面的提交数量。我正在尝试使用libgit2sharp库来实现同样的事情,但是该库没有完整记录,所以我找不到如何实现。

我正在寻找一个使用 获取后面/前面提交号的示例libgit2sharp

git libgit2 libgit2sharp git-rev-list

5
推荐指数
1
解决办法
947
查看次数

哪种格式应该是LibGit2的SSH私钥LibGit2Sharp(+ SSH)

我有点困在SSH私钥问题和LibGit2Sharp-Ssh.

我有一个.Net/C#应用程序,它使用LibGit2Sharp-Ssh来克隆Git存储库.

我需要使用SSH(https,用户/密码不是一个选项),我也有一个有效的密钥,已经在使用Teamcity.

我的代码看起来像这样:

CloneOptions options = new CloneOptions
{
     Checkout = false,
     CredentialsProvider = (url, user, cred) => new SshUserKeyCredentials()
     {
          PrivateKey = privateKey,
          Passphrase = passphrase,
          PublicKey = publicKey,
          Username = "git"
     }
};
var clone = LibGit2Sharp.Repository.Clone(remoteUrl, localPath, options);
Run Code Online (Sandbox Code Playgroud)

privateKey 指向"OpenSSH"格式的私钥文件.

什么时候Clone执行我得到:

LibGit2Sharp.LibGit2SharpException: "Failed to authenticate SSH session: Invalid key data, not base64 encoded"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了使用PuttyGen创建的所有私钥格式,但我总是得到相同的结果.

我可能需要创建私钥文件的问题或格式是什么?

我的OpenSSH格式键看起来像(截断的):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,27A4E70608469318

<Key-Data, like "sdhsdcQEHBg3uzfb...">
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

.net git ssh libgit2 libgit2sharp-ssh

5
推荐指数
1
解决办法
660
查看次数

将 SSH 身份验证与 libgit2 结合使用

我正在尝试libgit2使用 SSH 密钥对 git 服务器进行身份验证。到目前为止,这适用于像 的 URL ssh://myuser@host.domain:1234/dirs/repo.git,其中我的应用程序接受 URL 作为参数。

但是,如果我从 URL 中删除用户名(即ssh://host.domain:1234/dirs/repo.git)连接失败,即使我以编程方式设置了用户名(见下文)。

考虑以下用于检查某个存储库是否可访问的程序的 MCVE(除必要外,没有错误检查):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#include <git2.h>
#include <git2/sys/repository.h>

int my_cred_cb(git_cred **out, const char *url,
    const char *username_from_url, unsigned int allowed_types, void *payload)
{
  uid_t uid = geteuid();             // Get effective user ID
  struct passwd* pw = getpwuid(uid); // Get password file entry

  char privkeypath[strlen(pw->pw_dir) + 13];
  strcpy(privkeypath, pw->pw_dir);
  strcat(privkeypath, "/.ssh/id_rsa"); …
Run Code Online (Sandbox Code Playgroud)

c git ssh libgit2 libssh2

5
推荐指数
1
解决办法
1392
查看次数