ローカル開発リポジトリ管理ツール[閉じる]

ローカル開発リポジトリ管理ツール[閉じる]

私はWeb開発者であり、さまざまな言語やプロジェクトで作業しています(そうでない人はいますか?)。私はこれらのプロジェクト/ストアの多くをローカルでさまざまなディレクトリに複製しました。

今数年にわたって何十ものプロジェクトを複製した結果、私が頻繁に複製したアイテムを見つけるのに時間がかかるため、混乱しているように感じます。

簡単に言えば、ローカル開発リポジトリを管理するシステムが必要です。目的は次のとおりです。

  • より良い個人組織と
  • 新しいマシンを購入すると、設定が速くなります。

主にリポジトリですが、リポジトリもgitあります。svncvs

この問題を解決するのに役立つツールはありますか?私は車輪を再発明していることを知るためにカスタムソリューション(スクリプト)を作成したくありません。

この問題を解決するには、構成管理ツール(chef、puppet、ansible)が適していますか?

答え1

myreposこれはここで適切です。これにより、さまざまな種類の複数のソースコードストアを管理できます。単一の構成ファイルにすべてのリポジトリを記述し、必要に応じて同時にまたは個別に管理できます。

ChefやAnsibleなどの集中型構成管理ツールはここには適していないと思います。

答え2

/usr/local/srctarballでも、一部のサードパーティのSCMホストからのすべてのサードパーティのソースをに保存します。

(なぜそこにありますか?デフォルトのインストールプレフィックスが/usr/localほとんどのパッケージに適用されるので、ソースコードをバイナリと一緒に置くのはどうですか?)

だから、新しい開発マシンをセットアップするために私はこう言います。

$ cd /usr/local/src
$ sudo chown $USER .
$ scp -r oldbox:/usr/local/src/* .

アクティブな開発ボックスが複数ある場合は、最後に使用したサブツリーから引き続き新しいサブツリーをドラッグする必要がありますが、これは大きな負担ではないと思います。

場合によっては、最新の安定リリースtarballからソースコードを解放し、現在SCM "head"チェックアウトを行うなど、特定のパッケージの複数のバージョンがある場合があります。この場合、ツリーは次のようになります。

 $ cd /usr/local/src
 $ mkdir somepkg
 $ cd somepkg
 $ tar xvf ~/Downloads/somepkg-*tar*
 $ mv somepkg-1.2.3 1.2.3
 $ git pull http://someserver.example.com/somepkg.git
 $ mv somepkg head

つまり、並列性somepkg/1.2.3somepkg/headツリーがあるため、必要に応じて2つを切り替えることができます。何らかの理由で複数の安定版を使用する必要がある場合、同時に複数の「安定」バージョンを使用することがあります。

すべてをローカルファイルサーバーに保存しても問題ありませんが、これはいくつかのレベルで失敗します。

  1. 今日、ほとんどのファイルサーバーはSMBを実行しています。 NFSやその他のPOSIX準拠のネットワークファイルシステムでは、常に必要なファイルシステムを得ることはできません。これは、権限が混乱し、一部の正当なPOSIXファイル名が許可されず、大文字と小文字が区別されないために問題が発生する可能性があることを意味します。

  2. 習慣的にツリー./configure && make内でビルドすると、プラットフォーム固有のバイナリ出力が発生するため、autom4te.cacheボックスを変更するたびにこれを行う必要があります。make clean && ./configure

    いつでもこの問題を解決できます。木で作るしかし、すべてのパッケージがこのように自分で構築する方法を知っているわけではありません。

  3. NASでソフトウェアをコンパイルするのは遅いです。

各開発システムに別々のコピーを保管することで、これらの問題を回避できます。支払いツリーを新しいボックスに入れたmake clean ; ./configure後でもまだ話す必要がscpありますが、そうすれば、新しいボックスに新しいツリーを繰り返し入れるのではなく、SCMホストgit pullからsvn up最新の変更をインポートして更新を取得できます。scp

この問題をよりよく解決するために、Web用のパッケージマネージャを作成しようとするいくつかの試みがあります。ボールジャム新しいプロジェクト管理など。これらの問題は、どのパッケージでも使用したいパッケージがすべて見つからないことです。近い将来には、サードパーティのSCMから取得したリソースを管理する必要があります。

関連情報