问题标签 [rugged]

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 回答
188 浏览

ruby - 为什么我在 libgit2 / 崎岖不平中看到不准确的差异增量?

当使用坚固的删除文件来暂存提交时,提交的差异会出现关于哪些文件被删除的错误信息。应该存在的文件实际上仍然存在,并且项目的结果状态是正确的。只是差异报告不正确。

我可能会误解/误用Rugged::Tree::Builder,但除了差异之外,一切似乎都正确。请注意,我在这里留下了一个空树对象,但我不明白为什么这会影响这一点。

项目结构:

demo-project/ └── MasterDir ├── Directory1 │   ├── File1 │   ├── File2 │   └── File3 ├── Directory2 │   ├── File4 │   └── File5 ├── Directory3 │   └── File6 └── Directory4 └── File7

调用顺序

irb 会话:

因此,即使我只删除了 3 个文件,增量显示我已经删除了所有内容(7 个文件)。我已经尝试了所有可用的选项diff(),所以我猜我在使用Tree::Builder. 我不允许离开空树对象吗?

0 投票
7 回答
35554 浏览

ruby-on-rails - 安装坚固耐用时发生错误

按照本教程 [链接] 在专用服务器上安装 gitlab。我需要 :

但是安装坚固耐用时出现错误:

所以我安装了坚固的 -> 我安装了 CMake & config-pkg :

但它并没有改变任何东西:

任何想法 ?

0 投票
1 回答
513 浏览

ruby - 来自源的坚固合并提交不会更新工作树

此问题类似,但我没有创建新文件,而是尝试从原点合并。Rugged::Repository使用's创建新索引merge_commits和新的合并提交后,git 将新文件(来自origin)报告为已删除。

创建合并索引,

和一个新的合并提交,

并确保使用合并索引中的树。

创建提交

检查我们的 HEAD 是否已更新:

看起来不错。我在索引中看到了新文件。将其写入磁盘。

...但 git 将新文件报告为已删除:

如何正确更新我的索引和工作树?

0 投票
1 回答
338 浏览

git - 通过特定分支的 git 提交使用 Ruby 进行迭代

我想使用 Rugged 遍历特定分支上的所有提交,从最旧的(第一个)到最新的(最后一个)。我想检查一下 SHA1 和每个人的评论。

也许我最好只运行 'git log --reverse' 并解析结果,但只要有这个很好的 Ruby 库可以与 Git 一起使用,我想我会使用它。

请原谅我,但我无法从 Rugged 或 libgit2 文档中完全弄清楚如何做我想做的事情。

0 投票
0 回答
110 浏览

git - 在 Rugged 中更新参考的正确方法

作为较早问题的后续,我正在尝试更新一个引用(例如release)以指向另一个引用(例如master)。


如果我有一个master和一个release分支,并且master是在 之前的单个提交release,我想“快进”releasemaster. 我试试这个:

这几乎可以工作,但让我的回购处于这样的状态:

我错过了一步吗?我希望我的暂存区是“干净的”。

我试过r.index.write_tree(r)and r.index.write,但没有骰子。

0 投票
1 回答
111 浏览

ruby - 我可以使用 Rugged 或其他 Ruby 库创建孤立标签吗?

我试图在 Ruby 中模拟以下内容: object=$1 tag_name=$2 message=$3 user_name= git config user.name user_email= git config user.email date=date +%s

我使用 Rugged 尝试了以下操作: repo = Rugged::Repository.new(@full_path) tag_collection = Rugged::TagCollection.new(repo) annotated_tag_sha = tag_collection.create(tag_name, sha, {:message => msg, :time => Time.now}) repo.close

然而两者并不等价。任何建议,将不胜感激。

我确实使用以下方法在本地工作:

结尾

使用 git 1.9 但它现在在 git 2.0.4 中抛出错误无法验证具有 id 的对象

0 投票
3 回答
883 浏览

ruby - 如何使用 Rugged 查找提交中更改的文件?

我打算使用 Rugged 以编程方式访问 Git 存储库。

我需要找出在特定提交中更改的文件。

根据文档,提交对象提供以下内容。

  • 信息
  • 时间
  • 作者
  • 父母

我尝试了“树”路线,但未能成功。

我在 SO 中看到了一个与 Grit 相关的类似问题。但是,我想使用 Rugged。

在 ruby​​/grit 中,如何获取在特定提交中更改的文件列表?

0 投票
1 回答
201 浏览

git - 处理 Rugged 中的合并冲突

我正在研究一个需要合并的 Ruby 脚本。我想做的是,给定目标引用和合并尝试合并它们,如果存在合并冲突,则将控制权交还给用户以解决它们,基本上完全一样git merge,因此用户可以处理冲突,然后调用git my-merge --continue并从我们离开的地方继续。

我到目前为止是这样的:

问题来了:鉴于merge_index我有一些冲突,我如何让我的工作目录进入它所代表的状态,以便我可以返回到 shell 并让用户解决它们?似乎我无法将其写出(它会抱怨它无法写出未完全合并的索引),并且我看不到将当前索引设置为它的明显方法。

0 投票
1 回答
182 浏览

ruby - 坚固的存储库实例是线程安全的吗?

我的问题归结为标题:坚固的存储库实例(旨在)是线程安全的吗?

当我这样做时,我可能能够解决一个我一直有更长的问题:在使用不同的 Repository 实例时,是否使用坚固的(打算是)线程安全的来访问 git 存储库?

语境

我正在使用 Rugged 访问一个 git 存储库,该存储库存储多个用户的文档,这些用户可以通过共享的 Web 前端访问该存储库。到目前为止,我为每个访问创建了一个新的 Repository 实例,因为它表现得足够好并且似乎是安全的(我无法在文档中找到保证或从使用 libgit2 的方式确定明显的安全性,但没有测试发现问题,我'我假设 libgit2 本身是安全的)。

但是,我遇到了一个问题,它限制了您可以几乎同时打开的存储库实例的数量,这会导致一些脚本出现问题,这些脚本重用了为每个 git 存储库访问创建存储库实例的一些代码。一个简单的解决方案是在所有用户之间共享存储库实例。但是,如果存储库实例不是线程安全的,这将导致问题。我是否需要使用 Mutex 来保护所有这些共享实例,或者我可以不使用 Mutex,因为坚固/libgit2 已经为我解决了这个问题?

0 投票
1 回答
154 浏览

rugged - 如何使用 Rugged 检测文件重命名?

我是新手 Rugged 用户,我正在尝试检测提交历史记录中的文件重命名。我将每个提交与其第一个父级进行比较,如下所示:

但是,当我确实有重命名时,程序将输出添加和删除(A 和 D 状态)。这与 的输出相匹配git log --name-status

另一方面,我发现git log --name-status --format='%H' --follow -- b.txt正确使用将重命名为R100.

git 的 repo 历史和输出可以在以下要点中看到:https ://gist.github.com/ifigueroap/60716bbf4aa2f205b9c9

我的问题是如何使用 Rugged 的​​ Diff 或 Delta 对象来检测这样的文件重命名...

谢谢