问题标签 [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.
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
. 我不允许离开空树对象吗?
ruby-on-rails - 安装坚固耐用时发生错误
按照本教程 [链接] 在专用服务器上安装 gitlab。我需要 :
但是安装坚固耐用时出现错误:
所以我安装了坚固的 -> 我安装了 CMake & config-pkg :
但它并没有改变任何东西:
任何想法 ?
ruby - 来自源的坚固合并提交不会更新工作树
与此问题类似,但我没有创建新文件,而是尝试从原点合并。Rugged::Repository
使用's创建新索引merge_commits
和新的合并提交后,git 将新文件(来自origin
)报告为已删除。
创建合并索引,
和一个新的合并提交,
并确保使用合并索引中的树。
创建提交
检查我们的 HEAD 是否已更新:
看起来不错。我在索引中看到了新文件。将其写入磁盘。
...但 git 将新文件报告为已删除:
如何正确更新我的索引和工作树?
git - 通过特定分支的 git 提交使用 Ruby 进行迭代
我想使用 Rugged 遍历特定分支上的所有提交,从最旧的(第一个)到最新的(最后一个)。我想检查一下 SHA1 和每个人的评论。
也许我最好只运行 'git log --reverse' 并解析结果,但只要有这个很好的 Ruby 库可以与 Git 一起使用,我想我会使用它。
请原谅我,但我无法从 Rugged 或 libgit2 文档中完全弄清楚如何做我想做的事情。
git - 在 Rugged 中更新参考的正确方法
作为较早问题的后续,我正在尝试更新一个引用(例如release
)以指向另一个引用(例如master
)。
如果我有一个master
和一个release
分支,并且master
是在 之前的单个提交release
,我想“快进”release
到master
. 我试试这个:
这几乎可以工作,但让我的回购处于这样的状态:
我错过了一步吗?我希望我的暂存区是“干净的”。
我试过r.index.write_tree(r)
and r.index.write
,但没有骰子。
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 的对象
ruby - 如何使用 Rugged 查找提交中更改的文件?
我打算使用 Rugged 以编程方式访问 Git 存储库。
我需要找出在特定提交中更改的文件。
根据文档,提交对象提供以下内容。
- 信息
- 时间
- 作者
- 树
- 父母
我尝试了“树”路线,但未能成功。
我在 SO 中看到了一个与 Grit 相关的类似问题。但是,我想使用 Rugged。
git - 处理 Rugged 中的合并冲突
我正在研究一个需要合并的 Ruby 脚本。我想做的是,给定目标引用和合并尝试合并它们,如果存在合并冲突,则将控制权交还给用户以解决它们,基本上完全一样git merge
,因此用户可以处理冲突,然后调用git my-merge --continue
并从我们离开的地方继续。
我到目前为止是这样的:
问题来了:鉴于merge_index
我有一些冲突,我如何让我的工作目录进入它所代表的状态,以便我可以返回到 shell 并让用户解决它们?似乎我无法将其写出(它会抱怨它无法写出未完全合并的索引),并且我看不到将当前索引设置为它的明显方法。
ruby - 坚固的存储库实例是线程安全的吗?
我的问题归结为标题:坚固的存储库实例(旨在)是线程安全的吗?
当我这样做时,我可能能够解决一个我一直有更长的问题:在使用不同的 Repository 实例时,是否使用坚固的(打算是)线程安全的来访问 git 存储库?
语境
我正在使用 Rugged 访问一个 git 存储库,该存储库存储多个用户的文档,这些用户可以通过共享的 Web 前端访问该存储库。到目前为止,我为每个访问创建了一个新的 Repository 实例,因为它表现得足够好并且似乎是安全的(我无法在文档中找到保证或从使用 libgit2 的方式确定明显的安全性,但没有测试发现问题,我'我假设 libgit2 本身是安全的)。
但是,我遇到了一个问题,它限制了您可以几乎同时打开的存储库实例的数量,这会导致一些脚本出现问题,这些脚本重用了为每个 git 存储库访问创建存储库实例的一些代码。一个简单的解决方案是在所有用户之间共享存储库实例。但是,如果存储库实例不是线程安全的,这将导致问题。我是否需要使用 Mutex 来保护所有这些共享实例,或者我可以不使用 Mutex,因为坚固/libgit2 已经为我解决了这个问题?
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 对象来检测这样的文件重命名...
谢谢