既存のファイルの編集 (のみ) を許可する GIT ベア リポジトリ用の基本的な GIT Web UI を作成しようとしています。
たとえば、次の 2 つのケースを考えてみます。
- /dir-a/dir-b/dir-c/a-file.txt
- /a-file.txt
Git の低レベルの配管コマンドを使用して編集を保存するにはどうすればよいですか? また、Grit
これを行うためのショートカットが提供されているかどうかはわかりません。
Grit についてはわかりませんが、Git 自体では、インデックスを使用してこのようにすることができます。
dir-a/dir-b/dir-c/a-file.txt に保存される新しいコンテンツが /tmp/new-content.txt で利用可能であると仮定しましょう。
git read-tree HEAD
newhash=$(git hash-object -w --path=dir-a/dir-b/dir-c/a-file.txt /tmp/new-content.txt)
git update-index --cacheinfo 0644 $newhash dir-a/dir-b/dir-c/a-file.txt
newtree=$(git write-tree)
newcommit=$(git commit-tree $newtree -p HEAD -m 'file editedin a bare repository')
git update-ref HEAD $newcommit