Git リポジトリにテキスト ファイルを保存したいと考えています。これには Ruby rugged gem 0.19.0 を使用しています。問題は、2 番目のファイルを追加する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-status2 回目のコミットでf1ファイルが削除されることが示されます。
これを修正して、以前にリポジトリに保存されたファイルを台無しにしないようにするにはどうすればよいですか?