7

すべてのドットファイルと構成ファイルを保存するためのgitリポジトリを作成しようとしています。私のアイデアは、気になるすべてのファイルへのハードリンクを作成し、それらのリンクをリポジトリに変換できる独自のディレクトリに保存することでした。

〜/ .gitconfigファイルを使用しているのに、少し問題が発生しました。'git config'コマンドを実行するたびに、作成したリンクが正しい場所を指していないようです。たとえば、リポジトリ内のファイルが正しく更新されなくなりました。

これは、シェルとインタラクティブRubyを使用してファイルのリンク状態を判別する例です。

# Create the link
$ ln .gitconfig .conf_files/gitconfig  # Create the link

# The files are in fact linked
[1] pry(main)> File.identical?('.gitconfig', '.conf_files/gitconfig')
=> true

# Update the gitconfig file by running a 'git config' command
$ git config --global alias.last 'log -1 HEAD'

# The files are no longer linked.
[2] pry(main)> File.identical?('.gitconfig', '.conf_files/gitconfig')
=> false

これは、gitが.gitconfigファイルを書き込んでいる方法と関係があると思います。なぜこれが起こるのか誰かが知っていますか、または回避策のための創造的なアイデアがありますか?

4

4 に答える 4

2

これは完全に正常な動作であり、実際に構成ファイルを上書きする方法として推奨されています。Git は一時ファイルを作成し、構成を書き出してから、古いファイルの上に新しいファイルを移動します。これにより、Git が中断された場合でも、不完全な構成ファイル (データの損失) を取得することはありません。

構成ファイルを中央リポジトリにコピーまたはリンクするためのスクリプトをいつでも作成できます。

于 2012-08-02T22:21:09.153 に答える
0

この回答をチェックしてください。おそらく役立つかもしれません:

https://stackoverflow.com/a/3731139/1431696

それまでの間、リンクを逆にすることを検討しましたか? 構成ファイルなどでいっぱいのリポジトリを作成し、実際にファイルを使用する場所に、リポジトリにある「実際の」ファイルへのハードリンクを作成します。

于 2012-08-02T22:23:04.633 に答える
0

Dietrich Epp の回答とアドバイスのおかげで、ファイルシステムのルートにリポジトリを作成し、.gitignore を使用して関心のあるファイルのみを追跡することで、この問題に別の角度からアプローチすることにしました。

私の .gitignore ファイルは次のようになります。

/*

!/etc/
/etc/*

# etc files
!/etc/rc.conf
!/etc/asound.conf
!/etc/mercurial/

!/home/
!/home/matt/
/home/matt/*

# Home files
!/home/matt/.xinitrc
!/home/matt/.gitconfig
!/home/matt/.bashrc

# Vim files
!/home/matt/.vimrc
!/home/matt/.vim/
.netrwhist

ファイルを別々にコピーして 2 つの別々の場所に保管する必要がないことに加えて、必要に応じて手動でファイルをコピーしなくても変更を簡単に元に戻すことができるという利点があります。

助けてくれてありがとう!

于 2012-08-02T23:04:57.200 に答える