我正在尝试删除 git repo 中的一组目录,并为每个删除的目录进行 1 次提交。我正在使用 Rugged 和 Gitlab_git(它或多或少只是 Rugged 的一个包装器),到目前为止,除了实际删除和提交之外,我已经设法完成了我需要做的所有事情。
我在Rugged 自述文件中没有看到任何解释如何删除整个树/目录的内容。我尝试将他们的提交示例用于 blob 并用目录替换单个文件,但它没有用
我还尝试编辑他们为树构建器提供的代码,但它在我的历史记录中添加了一个提交,显示存储库中的每个文件都已添加,然后离开暂存显示相同的内容。什么都没有被删除。
oid = repo.write("Removing folder", :blob)
builder = Rugged::Tree::Builder.new(repo)
builder << { :type => :blob, :name => "_delete", :oid => oid, :filemode => 0100644 }
options = {}
options[:tree] = builder.write
options[:author] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
options[:committer] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
options[:message] ||= "Making a commit via Rugged!"
options[:parents] = repo.empty? ? [] : [ repo.head.target ].compact
options[:update_ref] = 'HEAD'
Rugged::Commit.create(repo, options)
有什么建议么?我对 git 内部仍然有点模糊,所以也许这就是我的问题。