10

私は 3 台の Linux マシンを持っており、ホーム ディレクトリ内のドットファイルを同期させる何らかの方法が必要です。.vimrc などの一部のファイルは、3 台のマシンすべてで同じであり、一部は各マシンに固有です。

私は以前に SVN を使用したことがありますが、DVCS に関するすべての話題から、SVN を試してみるべきだと思います。これに最適な特定のものはありますか? それともSVNに固執する必要がありますか?

4

10 に答える 10

5

私はこの問題を何年も抱えていましたが、バージョン管理が必ずしも正しい方法だとは思いません。私は、2 台のマシンで一貫したホーム ディレクトリを維持するという明確な目的のために設計された Unison ファイル シンクロナイザでうまくいきました。私は現在7つのレプリカを一斉に管理しており、詳細は少しトリッキーですが、それは素晴らしいツールであり、2つから始めれば非常に満足するでしょう.

Unison と VCS の主な違いは、Unison はマージが必要な競合の処理を遅らせても構わないと思っていることです。さらに、すべてのデフォルトが正しくなります。しかも高速です。DSL 回線を介して毎日使用し、約 40 GB のデータを同期しています。

于 2008-11-28T19:06:02.550 に答える
4

どの DVCS も問題なく動作する可能性があります。私のお気に入りはバザーです。構成ファイルを .config に保持し、そのバージョンを保持してから、必要に応じてシンボリック リンクを作成するのが最も簡単です。

DVCS の利点は、グローバル構成のバージョン管理に干渉することなく、マシンごとの構成ファイルもバージョン管理できることです。

于 2008-09-01T20:15:56.030 に答える
2

私は同じ問題を抱えており、パーミッション、所有権、およびセカンドコンテキストの追跡を追加し、.svn ディレクトリを実際にバージョン管理されたツリーから除外し、たとえばすべてを追跡できるようにレイヤーの概念を追加するツールを Subversion の上に構築しました。開発に関連する構成。その後、開発に使用するマシンでのみチェックアウトします。

これにより、ログインしている 50 台以上のマシンで設定をより適切に整理することができました。

プロジェクトページはこちら。まだ端が少し荒いですが、60以上のサーバーのシステム構成をバージョン管理するために職場でも使用しています.

一般に、ある種のメタデータ ファイルを使用して何かを追跡するバージョン管理システムは、実際に使用するときと同じように苦痛を感じます。

于 2008-09-01T20:25:04.870 に答える
0

これにはgitを使用します。これまでのところ、分岐やマージを行うことなく、複数のマシンのホーム ディレクトリの同期を保つことができました。代わりに、 を使用しますgit rebase。これまでのところ、競合はほとんどなく、解決も容易です。

個別のコンテンツを持つ必要があるファイルは、.xml に入れることでリビジョン管理から除外し.gitignoreます。

次のツールの構成ファイルを git に保存しています。

  • いろいろな貝殻
  • emacs とアプリケーション、つまり
    • ヌー
    • BBDB
    • emacs-w3m
  • 雑談
  • 画面
  • さまざまなユーティリティとスクリプト

独自の git リポジトリを持つサブディレクトリにメモなどを保管しています。

于 2009-04-08T19:15:18.963 に答える
0

まだ行っていない場合は、 etckeeperを調べることをお勧めします。バージョン管理システムを使用して /etc の構成ファイルをバージョン管理するように設計されています。

etckeeper は、/etc を git、mercurial、darcs、または bzr リポジトリに格納できるようにするためのツールのコレクションです。apt (および yum や pacman-g2 を含む他のパッケージ マネージャー) にフックして、パッケージのアップグレード中に /etc に加えられた変更を自動的にコミットします。リビジョン管理システムが通常サポートしていないが、/etc/shadow のアクセス許可など、/etc にとって重要なファイル メタデータを追跡します。これは非常にモジュラーで構成可能ですが、リビジョン管理の基本を理解していれば簡単に使用できます。

/etc 用に設計されていますが、基本的なニーズは同じであるため、ホームディレクトリでも (おそらく何らかの調整を加えれば) うまく機能すると思います。

于 2009-04-08T19:51:13.353 に答える
0

これが古いスレッドであることは知っていますが、いくつかのドットファイルを検索しているときに見つけました。

私の現在のシステムは、Subversion を使用しています。私が行った重要なことは、作業コピーを ~/.svnhome/ にチェックアウトすることでした (後から考えると、.dotfiles またはより一般的なものと呼ぶべきでした)。次に、そのコンピューターで実際に使用するファイルへのシンボリック リンクをホームに作成します。たとえば、私の .procmail および .spamassassin フォルダーはメール サーバー上でのみ必要なので、ホーム サーバー上ではそれらをリンクしません。

いくつかの違いがある唯一のファイルは、.bashrc ファイルに macports の私の mac にいくつかの余分な行があることです。したがって、.bashrc の下部で、.bashrc_local が存在するかどうかを確認し、それを解析します。

これは、私が subversion を使用して最後に残したものです (他のすべては仕事以外で git を使用しています)。svn の利点は、dvcs ではないため、1 つのサーバーで誤ってコミットしてプッシュするのを忘れることを心配する必要がないことです。

ブランチを作成できるように、それを git に移動することを検討しました。上記の例を使用すると、.procmail フォルダーと .spamassassin フォルダーを追加するメイン サーバーのブランチが作成されますが、マスター ブランチには含まれません。しかし、現在のシステムは何年もの間 (git が存在する前から) うまく機能しており、現在は変更する特別な動機はありません。

于 2011-02-10T22:19:54.920 に答える
0

これを行おうとした Mozilla 開発者は次のとおりです:バージョン コントロール マイ ホーム ディレクトリ、コメントにいくつかの提案があります。

于 2008-09-01T20:35:13.457 に答える
0

バージョン管理ソフトウェアは、ホーム ディレクトリにはあまり適していません。さらに悪いことに、一部のソフトウェアは .svn フォルダーが気に入らないか、その内容を解釈し始めます。もちろん、非常に複雑なミラーリング設定でこれを修正しようとすることもできますが、それは困難です。

于 2008-09-01T20:21:26.733 に答える
0

gitまたはMercurialsの安価な分岐は、この状況に最適です。Mercurial の方が簡単なので、最初は Mercurial から始めましたが、その後 git に移行しました。

于 2009-04-08T18:16:11.803 に答える