【发布时间】:2014-06-23 22:32:58
【问题描述】:
我想将文本文件存储在 Git 存储库中。我为此使用 Ruby 坚固的 gem 0.19.0。问题是添加第二个文件f2 似乎会自动删除第一个文件f1。我已经隔离了重现此代码的代码(基本上直接来自坚固的 gem 文档的代码):
require 'rugged'
def commit(file_name, message, content)
user = { email: 'email', name: 'name', time: Time.now }
repo = Rugged::Repository.new('repo')
oid = repo.write(content, :blob)
index = repo.index
index.add(path: file_name, oid: oid, mode: 0100644)
options = {}
options[:tree] = index.write_tree(repo)
options[:author] = user
options[:committer] = user
options[:message] = message
options[:parents] = repo.empty? ? [] : [ repo.head.target ].compact
options[:update_ref] = 'HEAD'
Rugged::Commit.create(repo, options)
end
Rugged::Repository.init_at('repo', :bare)
commit('f1', 'create f1', 'f1 content')
commit('f2', 'create f2', 'f2 content')
在运行上述代码并克隆创建的裸仓库后,git log --name-status 显示第二次提交删除了 f1 文件。
如何解决此问题,以免与之前存储在存储库中的文件混淆?
【问题讨论】: