web-dev-qa-db-ja.com

gitでのシンボリックリンクの使用

以前は、管理を改善するためにシステム構成ファイルをすべて1つのディレクトリに置いていましたが、今はバージョン管理を使用する必要があります。

しかし、問題は、gitがリポジトリの外部を指すシンボリックリンクを理解せず、一部のファイルが読み取られるため、ロールを反転できないことです(リポジトリに実際のファイルがあり、シンボリックリンクが適切なパスにあります)。カーネルがロードされる前。

Unisonを使用して、リポジトリ内のファイルとそのパスを同期できると思いますが、実際的ではありません。そして、ハードリンクはおそらく壊れます。何か案が ?

5

これらのファイルを手動で編集する唯一の方法である場合は、正規バージョンをシステム構成ディレクトリに配置し、それらを「実際の」場所にコピーするコミット後フックをgitに設定できます。

2
pjz

--work-treeフラグと--git-dirフラグ(git help git、両方を絶対パスに設定し、エイリアスを作成)を使用して、バージョン管理されたディレクトリの外に.gitフォルダーを作成できます。

2
Tobu

Debianおよび派生ディストリビューションでは、 etckeeper を使用して/etcを管理できます。 etckeeperをインストールし、etckeeper initを1回実行し、何かを変更したときにetckeeper commitを実行するのと同じくらい簡単です。

EtckeeperがArchLinuxで直接利用できるかどうかはわかりませんが、Web上に 成功レポート があります。

Etckeeperはgitフックを使用して、権限、所有権、シンボリックリンクなどのメタデータを処理します。