5

Linux の設定を試しているのですが、変更を追跡したいですか? もちろん、OS全体をバージョン管理下に置きたくありませんか?

OS全体を保存せずに変更を追跡する方法(git、mercurial、またはVCSを使用)はありますか?

これは私が想像するものです:

  1. 私は一種の git init を実行します -> すべてのファイルのすべてのハッシュが保存されますが、ファイルの内容は保存されません
  2. ファイルシステムにいくつかの変更を加えます->このファイルのハッシュが変更されたことをgit検出します
  3. I commit -> ファイルの内容が保存されます (または、元のファイルと diff が保存されるとさらに良いでしょう! わかっていますが、それは不可能です...)

可能?不可能?回避策?

編集:私が気にしているのは、リポジトリのサイズを最小限に抑え、自分の変更のみを含むリポジトリを作成することです。私のリポジトリにすべてのファイルがあることは、私には関係ありません。たとえば、github にプッシュする場合、変更されたファイルのみを含めたいだけです。

4

4 に答える 4

4

etckeeperを見てください。おそらくうまくいくでしょう。

于 2012-05-26T03:57:17.050 に答える
1

あなたが望むのはgit update-index --info-onlyor ... --index-info、マニュアルページから:「 --info-only は、ファイルをオブジェクトデータベースに配置せずに登録するために使用されます。これは、ステータスのみのリポジトリに役立ちます。」. --index-infoその産業規模のいとこです。

追跡したいファイルでそれを行いwrite-tree、インデックス構造をオブジェクト db に書き込み、commit-treeブランチupdate-refを更新します。

オブジェクト名を取得するには、 を使用しますgit hash-objectfilename

于 2012-05-26T09:13:31.273 に答える
0

これが私たちがすることです...

su -
cd /etc
echo "*.cache" > .gitignore
git init
chmod 700 .git
cd /etc; git add . && git add -u && git commit -m "Daily Commit"

次に、crontab をセットアップします。

su -
crontab -e

# Put the following in:
0 3 * * *   cd /etc; git add . && git add -u && git commit -m "Daily Commit"

これで、/etc のすべての変更が毎晩コミットされます。

1 つのレポで複数の /etc を追跡したい場合は、適切な無視パスを /.gitignore に追加することを除いて、ファイル システムのルートで簡単に実行できます。git 内に git を使用することの影響については不明であるため、その場合は特に注意する必要があります。

于 2012-05-26T03:51:06.190 に答える