标签: libgit2

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

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

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

git libgit2 libgit2sharp

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


使用libgit2列出分支中的所有提交

如何使用libgit2遍历分支的所有提交?

我已经有了下面的代码,但它没有编译.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <git2.h>

int main(int argc, char *argv[]){
    git_repository *repo;
    git_repository_open(&repo, ".");

    git_odb *obj_db;
    obj_db = git_repository_database(repo);

    git_object commit;
    git_revparse_single(&commit, repo, "HEAD");


    git_repository_free(repo);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

GCC报告:

log.c: In function ‘main’:
log.c:11:9: warning: assignment makes pointer from integer without a cast [enabled by default]
log.c:13:13: error: storage size of ‘commit’ isn’t known
Run Code Online (Sandbox Code Playgroud)

我用-lgit2旗子编译.从root-commit开始,是否有可能快速完成所有提交?

更新 新代码如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <git2.h>

int main(int argc, char *argv[]){
    git_repository *repo;
    git_repository_open(&repo, …
Run Code Online (Sandbox Code Playgroud)

c git libgit2

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

libgit2(获取 &amp; 合并 &amp; 提交)

我正在尝试从 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
查看次数

将 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
查看次数

如何用git2-rs Rust箱子完成"git pull"?

我正在使用git2-rs在Rust应用程序中实现一些标准的git功能.我一直在阅读git内部,并了解在高级别"git pull"是一个"git fetch",然后是"git merge",但我仍然无法理解如何使它与git2-rs一起工作.有对一个问题的讨论在这里在那里的同意,GIT2-RS"混帐拉"的例子将是很好的,但一个是从未创建.有一个在该讨论中进行硬重置的示例,但我想避免覆盖本地更改(因此合并).我一直无法在使用git2-rs的任何其他代码库中找到示例.

该"混帐复位"的例子在这里展示了如何获得一个OID后,取指,我认为,但合并功能需要一个AnnotatedCommit,我不知道如何在两者之间转换,或者即使是走在正确的方向.

git pull rust libgit2

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

标签 统计

libgit2 ×10

git ×5

c ×2

libgit2sharp ×2

c# ×1

cmake ×1

git-for-windows ×1

libssh2 ×1

pull ×1

ruby ×1

rugged ×1

rust ×1

ssh ×1