如何在具有特定父级的存储库中找到所有提交?
例如,如果我有一个 commit A,我想找到与A. 在 LibGit2Sharp 中执行此操作的最有效,即高性能但正确的方法是什么?
我想从工作树中删除未跟踪的文件.像这里 https://www.kernel.org/pub/software/scm/git/docs/git-clean.html
我正在尝试从 libgit2 的 repo 中提取。
我的步骤是这些:
这导致 .git 文件夹中的 MERGE_HEAD ,然后我可以与现有提交合并。
问题是,上面的顺序是否正确?为什么 git 创建 FETCH_HEAD 而 libgit2 有 MERGE_HEAD?
作为libgit2是一个库,是有其取决于libgit2并且暴露出通常GIT中的命令行接口(像任何现有的C / C ++项目git clone,git commit等等)?
我如何将 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 文件中放入什么?
最近我一直在使用 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) 可以使用git rev-list命令获取后面/前面的提交数量。我正在尝试使用libgit2sharp库来实现同样的事情,但是该库没有完整记录,所以我找不到如何实现。
我正在寻找一个使用 获取后面/前面提交号的示例libgit2sharp。
我有点困在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) 我正在尝试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) libgit2 ×10
git ×5
libgit2sharp ×3
ssh ×2
.net ×1
c ×1
c# ×1
cmake ×1
git-rev-list ×1
libssh2 ×1