GNU/Linux >> Linux の 問題 >  >> Linux

構成ファイルのバージョン管理に git を使用するのは良い考えですか?

あなたの質問への簡単な答えははいです .

構成ファイルを追跡するために、Git (または他のバージョン管理ソフトウェア) をお勧めします。そうすることで、生産性が向上し (特に、新しいインストールを構成する場合)、構成ファイルに自信が持てるようになりました。バージョン管理により、内容の記録があります 変更が行われ、コミット メッセージに理由が示されている理由 変更が行われました。変更によって意図しない副作用が発生した場合、ログ/履歴を簡単に確認して、影響を引き起こした変更を確認できます。

個人的には、/ の下にあるすべてのファイルを追跡することに慎重です。 ルートディレクトリ。無視するパスのリストが大きくなり、扱いにくくなる可能性があります。ファイルの各論理セットを独自のリポジトリに保持することを好みます。

私は手動で Git を使用して 個人 を追跡しています 構成/起動ファイル、例:Vim 構成、Bash 関数、エイリアスなど – git で $HOME を追跡する方法に記載されているアプローチと同様です。ファイルの各セットを独自のリポジトリに保持し、ホーム ディレクトリへのシンボリック リンクを使用します。

システム/etc 内のファイルを追跡するために Git と Etckeeper を使用しています。 ディレクトリ。

欠点

注意すべき問題の 1 つは、追跡されているファイルにハード リンクが含まれている場合です。 . Git を使用してファイルをチェックアウトしたり、作業ツリーを変更したりすると、ファイルのリンクが解除されてから再作成されます。詳細な説明については、Git、ドットファイル、およびハードリンクを参照してください。

エッチキーパー

Etkeeper は、/etc に加えられた変更の完全な履歴を保持するために使用できます。リビジョン管理システムが通常サポートしていないファイル メタデータを追跡しますが、これは /etc にとって重要です /etc/shadow の権限など .

apt や yum などのパッケージ マネージャーにフックし、(デフォルトの構成で) インストール前およびインストール後に実行されるため、すべての変更が /etc に適用されます。

パッケージがインストールまたは削除された場合、/etc 内のコミットされていないすべての変更は、パッケージ操作の前にコミットされるため、2 つのコミットが存在します:

<オール>
  • 「yum を実行する前にコミットされていない変更を /etc に保存する」
  • 「yum の実行後に /etc に変更をコミットする」
  • Debian および Red Hat ベースのディストリビューションで使用しており、Arch パッケージ管理をサポートしていることを知っています。 Gentoo システムにどの程度の自動化が追加されるかはわかりませんが、パッケージが利用可能です。

    リモート リポジトリへの構成ファイルのプッシュもサポートしています。 (もちろん、非公開にする必要があります)。

    構成

    パッケージをインストールした後、構成が必要になる場合があります (/etc/etckeeper/etckeeper.conf )、たとえば、Ubuntu システムでは、デフォルトのバージョン管理システムが Git から Bazaar に変更されます。 毎日の自動コミットを無効にすることもできます .

    毎日の自動コミット

    変更は、毎日の cron ジョブによって自動的にコミットできます .リポジトリが複数の自動化されたコミット メッセージで雑然とする可能性があるため、これは煩わしい場合があります。

    /etc/etckeeper/etckeeper.conf の適切な行のコメントを外します :

    sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf
    

    特定のファイルを無視

    /etc/.gitignore を編集 追跡しないファイルを指定します。

    最初の実行

    構成後、次のコマンドを実行します:

    sudo etckeeper init
    sudo etckeeper commit "Initial commit"
    

    現在のディレクトリが etc の場合 、通常の git を実行できます コマンド、例:

    sudo git status
    sudo git log
    

    ホーム ディレクトリの特定の領域を追跡するために git を使用しています。個人的には、ルート ディレクトリを追跡する道をたどるつもりはありませんが、あなたの野心には感服します。 :)

    おそらく、この一連の経験は、あなたが何に夢中になっているのかについてのより良いアイデアを提供してくれるでしょう:

    Linux ルート ディレクトリでの git リポジトリの初期化の影響 3:)

    コメントにリンクを投げるだけではなく、「回答」をお詫びします。ただし、十分な担当者ではありませんが、参加したいと考えています。

    編集

    わお! @AnthonyGeogheganによる非常に素晴らしい回答。これは私が最初に想像したほどの闘争ではないと信じています。


    Linux
    1. Inotifywaitを使用して、特定の拡張子のファイルを作成するためのディレクトリを監視する方法は?

    2. 複数のファイルのダウンロードが完了するのを待ちますか?

    3. Logrotateを使用してログファイルを管理する方法

    1. KRename –Linux用の強力なバッチファイルリネーム

    2. LinuxでNetcatを使用してファイルを転送する方法

    3. Linux構成ファイルで構文エラーを確認してください

    1. Linux 用の優れた 16 進エディタが必要

    2. Linuxでのファイルタグ付けの良い解決策は何ですか?

    3. rsync がローカル ファイルにデルタ転送を使用しないのはなぜですか?