私はWeb開発者であり、さまざまな言語やプロジェクトで作業しています(そうでない人はいますか?)。私はこれらのプロジェクト/ストアの多くをローカルでさまざまなディレクトリに複製しました。
今数年にわたって何十ものプロジェクトを複製した結果、私が頻繁に複製したアイテムを見つけるのに時間がかかるため、混乱しているように感じます。
簡単に言えば、ローカル開発リポジトリを管理するシステムが必要です。目的は次のとおりです。
- より良い個人組織と
- 新しいマシンを購入すると、設定が速くなります。
主にリポジトリですが、リポジトリもgit
あります。svn
cvs
この問題を解決するのに役立つツールはありますか?私は車輪を再発明していることを知るためにカスタムソリューション(スクリプト)を作成したくありません。
この問題を解決するには、構成管理ツール(chef、puppet、ansible)が適していますか?
答え1
myrepos
これはここで適切です。これにより、さまざまな種類の複数のソースコードストアを管理できます。単一の構成ファイルにすべてのリポジトリを記述し、必要に応じて同時にまたは個別に管理できます。
ChefやAnsibleなどの集中型構成管理ツールはここには適していないと思います。
答え2
/usr/local/src
tarballでも、一部のサードパーティの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.3
とsomepkg/head
ツリーがあるため、必要に応じて2つを切り替えることができます。何らかの理由で複数の安定版を使用する必要がある場合、同時に複数の「安定」バージョンを使用することがあります。
すべてをローカルファイルサーバーに保存しても問題ありませんが、これはいくつかのレベルで失敗します。
今日、ほとんどのファイルサーバーはSMBを実行しています。 NFSやその他のPOSIX準拠のネットワークファイルシステムでは、常に必要なファイルシステムを得ることはできません。これは、権限が混乱し、一部の正当なPOSIXファイル名が許可されず、大文字と小文字が区別されないために問題が発生する可能性があることを意味します。
習慣的にツリー
./configure && make
内でビルドすると、プラットフォーム固有のバイナリ出力が発生するため、autom4te.cache
ボックスを変更するたびにこれを行う必要があります。make clean && ./configure
いつでもこの問題を解決できます。木で作るしかし、すべてのパッケージがこのように自分で構築する方法を知っているわけではありません。
NASでソフトウェアをコンパイルするのは遅いです。
各開発システムに別々のコピーを保管することで、これらの問題を回避できます。支払いツリーを新しいボックスに入れたmake clean ; ./configure
後でもまだ話す必要がscp
ありますが、そうすれば、新しいボックスに新しいツリーを繰り返し入れるのではなく、SCMホストgit pull
からsvn up
最新の変更をインポートして更新を取得できます。scp
この問題をよりよく解決するために、Web用のパッケージマネージャを作成しようとするいくつかの試みがあります。ボール、ジャム、新しいプロジェクト管理、塊など。これらの問題は、どのパッケージでも使用したいパッケージがすべて見つからないことです。近い将来には、サードパーティのSCMから取得したリソースを管理する必要があります。