问题标签 [objective-git]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
794 浏览

git - 如何在 libgit/objective-git 中获取存储库中的文件列表?

我想使用objective-gitlibgit2获取 Git 存储库中的文件列表

我现在正在做的是调用git命令行工具并解析git ls-files(或git ls-tree --name-only -r HEAD,给出相同结果)的输出,例如

我宁愿使用 libgit2 提供的直接 API。我尝试过objective-git的-[GTTree enumerateContentsWithOptions:error:block:]方法,但是枚举的GTTreeEntry对象只提供了一个名称,不知道它们在哪个子目录中。

0 投票
1 回答
651 浏览

git - 使用 Objective-Git 创建存储库

我正在尝试使用objective-git创建一个 Git 存储库。关于 GT 类如何协同工作以创建存储库的文档有些缺乏,所以我有点卡住了。

这是我到目前为止所做的工作:

然后我将一堆文件复制到该目录中。然后我可以在 Git 客户端中打开 repo 并在工作目录中查看这些文件。到目前为止一切看起来都不错。但这就是我卡住的地方,我下一步要实际创建一个分支并提交这些文件是什么?

编辑:我现在已经从我的 GTRepository 获得了 GTIndex(虽然,索引的 fileURL 属性仍然为零,所以我不确定如何生成该文件)。我遍历我的文件,调用addFile:error:它在我的索引中创建 GTIndexEntries。然后我调用writeTree:并取回我传入的 GTTree [repository createCommitWithTree:newTree message:@"Initial Commit" parents:nil updatingReferenceNamed:nil error:&error];。这将返回一个有效的 GTCommit 对象并且没有 NSError,但我希望 [repository headReferenceWithError:&error]; 现在将返回对新创建的提交的引用,但它仍然返回 nil。我是否缺少完成此提交的步骤?

0 投票
1 回答
297 浏览

objective-c - 目标-Git 合并

我正在使用 Objective-Git。我无法使用以下方法:

没有返回错误,但是返回的索引是空的,当它存在时,所有的属性都是nil。合并操作没有发生,我无法写出一棵树,因为我无法获得尝试合并产生的索引。

有没有人成功地使用目标 git 执行合并 - 如何?帮助!

0 投票
1 回答
1326 浏览

objective-c - 使用 libgit2 拉取(获取和合并)

我一直在使用 objecitive-git 和 libgit2 来尝试实现拉取功能。Asgit pull只是一个“瓷器”命令,由 agit fetch后跟 a git merge origin/masterthen 组成,这就是我实现它的方式。

使用来自 github 上的 fetch 分支的 Objective-git 中的方法执行获取。

下面的代码是在 fetch 之后完成的(我知道它成功了):

在内存中开始的mergedIndexwhich 已作为树写入磁盘(writeTreeToRepository使用git_index_write_tree_to)之后,git repos 状态没有变化。我假设我错过了制作新树 HEAD 或将其与 HEAD 或类似内容合并的最后一步,但我不确定到底是什么。

任何帮助将不胜感激。

0 投票
1 回答
580 浏览

objective-c - 使用 libgit2 取消暂存文件

使用 objective-git 和 libgit2 可以很容易地准备好提交的文件:

然而,取消暂存文件被证明有点棘手。简单地从存储库的索引中删除它是行不通的,因为 git 然后认为该文件已被删除,这是有道理的。看来我需要做的是将索引中的索引条目更改为上演之前的条目。

我尝试执行以下操作,使用 diff 获取旧的 diff delta 并git_index_entry从中构造 a 并插入它:

但是,这会使 git 索引处于损坏状态,从而导致任何 git 命令记录致命错误:

使用 libgit2 取消暂存文件的正确方法是什么?

0 投票
2 回答
204 浏览

rubymotion - 在 RubyMotion 中包含 libgit2

我正在尝试将objective-git 包含在ruby 运动中。我尽力将目标 gits 站点上的要求转换为 OS X ruby​​ 运动应用程序所需的内容。这是 Rakefile,objective-git 是位于 vendor 中的子模块。

这是错误:

0 投票
1 回答
1790 浏览

xcode - XCode 构建失败 - 缺少 aclocal [/share] 文件

我正在尝试构建一个 XCode 项目,并在尝试构建时收到以下错误:

看看build-libssh2.log我看到以下内容:

完整的日志在这里

再深入一点,似乎其中的所有文件/usr/local/share/aclocal都是它们自己的符号链接。这是有意的,还是这会导致我的问题?

另外,当我跑步时,which aclocal我会被指向/usr/local/bin/aclocal. 这是否意味着 XCode 或某些 shell 脚本正在尝试使用错误的 aclocal 安装?如果是这样 - 我该如何解决?

这就是我现在所掌握的。我会继续挖掘,当我了解更多时,我会更新这个。

0 投票
1 回答
2386 浏览

swift - 带有objective-git的Swift:这些部分匹配的参数列表存在“createCommitWithTree”的重载

我在 Swift 中使用 Objective-git,无法编译 GTRepository.createCommitWithTree 方法。

可以选择在没有 author : GTSignature 和 committer : GTSignature 参数的情况下调用该方法。

我是 Swift 和重载函数的新手。我想知道如何构造它以便编译。

我的代码使用了 Objective-git 方法中指定的所有类型:

在此代码中,编译器无法使用这些类型的参数列表调用方法。编译器提供了附加信息:“'createCommitWithTree' 的重载存在这些部分匹配的参数列表:(GTTree,消息:String,作者:GTSignature,提交者:GTSignature,父母:[AnyObject]?,updatedReferenceNamed:String?),(GTTree,消息:字符串,父母:[AnyObject]?,更新参考名称:字符串?)”

如果我重构使用上面建议的类型,编译器将不会使用“对成员'createCommitWithTree'的模糊引用”进行编译

我如何编写这个来编译?

谢谢

0 投票
2 回答
548 浏览

libgit2 - 如何使用 Objective-Git(libgit2)“取消暂存”文件?

我正在编写一个允许使用 Objective-Git 执行基本 git 操作的应用程序,但我无法弄清楚如何“取消暂存”文件。更具体地说,我有一个文件,其中包含先前已添加到当前 GTIndex 的更改,现在我想丢弃这些更改(不会丢失文件在磁盘上的当前状态)。

以下是我的程序在切换文件的“暂存”状态时当前遵循的相关逻辑的粗略概述:

根据这个未回答的老问题,我需要在当前 HEAD 中查找文件的信息。在这种情况下,这是我得出的逻辑:

任何指导表示赞赏!如果必须,我不害怕直接跳入 libgit2(这个项目已经需要它一两次),但是由于我在 Swift 中工作,如果可以的话,我想避免它并“取消暂存”文件似乎是一个标准程序,我想我一定不明白 Objective-Git 类是如何联系在一起的。

0 投票
1 回答
145 浏览

libgit2 - 在 libgit2 中, git_index_entry->flags_extended 是什么意思(以及它们何时设置)?

我正在尝试使用 libgit2 管理存储库的索引与其 HEAD 树(通过 Objective-Git,但我越来越发现自己正朝着香草 libgit2 兔子洞前进),并且想知道 git_index_entry 结构上的 flags_extended 字段的位掩码到底是什么意思是。此外,这些标志何时设置?我一直在挖掘 libgit2 源代码,但似乎找不到 flags_extended 发挥作用的地方。

我问的原因:

我有一个简单的测试存储库,其中一个提交包含一些简单的测试文件。工作副本有一个带有微小更改的跟踪文件和一个未跟踪文件,这两个文件都已在外部暂存(git add .在命令行上)。在我的应用程序中,我需要“取消暂存”文件,因此我获取了它们各自的 git_index_entry 结构。我期待 flags_extended 为修改后的文件设置 GIT_IDXENTRY_UPDATED 并为以前未跟踪的文件设置 GIT_IDXENTRY_ADDED ,但实际上两个 flags_extended 字段都是空的,这就是提示这个问题的原因(唯一设置的是标志字段中的 GIT_IDX_ENTRY_NAMEMASK ) .

我当然可以获取 HEAD 树并将条目与索引中的条目进行比较,但我希望 libgit2 已经通过 flags_extended 提供了该信息。