9

もちろん、私はSCMツールの有用性を確信していますが、SCMツールの実験的なユーザーではありません。以前の仕事ではあいまいな商用ツールを使用し、現在の仕事ではPerforceを使用し、小さな個人的なプロジェクトでTortoiseSVNを少し試しましたが、検索やバックアップなどを行うために、いたるところに.svnフォルダーがたくさんあるのは嫌いでした。難しい。それから私は分散型SCMの興味を発見し、個人的な個人的なニーズのために、明らかに単純な(gitよりも)Mercurialの方法を選択しました。私はそれを適切に使用することを学び、ウィキの一部を読み、優れたPDFブックの真っ只中にいます。

たとえば、Mercurialの作業慣行では、「ローカルで複数のツリーを使用することを躊躇しないでください。Mercurialはこれを高速かつ軽量にします。」および「作業する機能ごとに、新しいツリーを作成します。」これらは興味深く賢明なアドバイスですが、ブランチが慎重に計画され(そして管理者によって処理される)「聖なる」中央リポジトリがあり、チェンジリストは(上級)ピアによってチェックされなければならない集中型SCMで私の小さな習慣を少し傷つけますビルドなどを壊してはいけません:-)新しいブランチでの作業を開始するにはかなりの時間がかかります...

したがって、上記に照らして2つの質問があります。

  • IDEなどのコンテキストで、多くのクローンを作成することはどの程度実用的ですか?プロジェクトに構成/設定ファイル、makefile、Antスクリプト、シェルスクリプトなどがあり、パスの更新が必要な場合はどうなりますか?(はい、おそらく悪い考えです...)たとえば、Eclipseでクローンをコンパイルして実行する場合は、Javaビルドパス、実行/デバッグターゲットなどを微調整して、さらに別のプロジェクトを実行する必要があります。 。Eclipseプラグインがそのタスクを容易にしない限り。ここの施設が恋しいですか?

  • その規模はどのようになりますか?大規模なコードベースではHgは問題ないことを読みましたが、私は困惑しています。私の仕事では、約200万行のJavaアプリケーション(まあ、いくつかは大きな共通カーネルの周りにあります)があり、コードだけで約110MBの重みがあります。古い(2004)Windowsワークステーションでクリーンコンパイルを実行すると、50MBのクラスファイルを生成するのに約15分かかります。3つのファイルを変更するためにプロジェクト全体のクローンを作成しているとは思いません。では、ここでの実践は何ですか?

私はまだこれらの質問が私の読書で扱われているのを見たことがないので、これが有用なスレッドになることを願っています。

4

3 に答える 3

3

あなたはいくつかの良い点を上げます!

  • IDEなどのコンテキストで、多くのクローンを作成することはどれほど実用的ですか?

IDE やその他のツールが絶対パスに依存している場合、多くのクローンを管理するのが難しい場合があるのは、そのとおりです。その一部は、構成ファイルで常に相対パスを使用することで解決できます-ソースチェックアウトが任意の場所からコンパイルできるようにすることは、使用するリビジョン管理システムに関係なく、それ自体が良い目標です:-)

ただし、複数のクローンを使用できない、または使用したくない場合は、1 つのクローンで複数のブランチに対応できることに注意してください。「hgbook」は、概念的に単純で非常に安全な作業方法であるため、多くのクローンを強調しています。経験を積むと、単一のリポジトリで複数のヘッドを使用できることがわかります (おそらく、ブックマークで名前を付ける)。

  • それはどのようにスケーリングしますか?

110 MB のリポジトリのクローン作成は非常に高速です。ディスクに 110 MB を書き込むのにかかる時間によって異なります。Mercurial メーリングリストへの最近のメッセージでは、 6.3 GB のクローンを作成するのに 4 分かかったことが報告されました。これを 110 MB に縮小すると、約 4 秒かかります。それはあなたのお茶がまだ温かいほど十分に速いはずです:-) 秘訣の一部は、履歴データが単にハードリンクされていることです (はい、Windows でも)。コピー。

于 2009-05-27T21:16:31.787 に答える
2

PhiLo: 私はこれに慣れていませんが、mercurial には「内部ブランチ」もあり、クローンを作成する代わりに単一のリポジトリ内で使用できます。

それ以外の

hg clone toto toto-bug-434

できるよ

cd toto
hg branch bug-434
hg update bug-434
...
hg commit
hg update default

ブランチを作成し、前後に切り替えます。リビジョン管理下にないビルドファイルは、ブランチを切り替えても消えません。基になるソースが変更されると、一部のファイルは古くなります。IDE は必要なものだけを再構築します。CVS や Subversion と同じように機能します。

「作業」リポジトリに加えて、クリーンな「受信」リポジトリと「送信」リポジトリがまだ必要です。あなたの「仕事」が複数の目的を果たすことができるというだけです。

とはいえ、複雑なことを試みる前に、作業リポジトリを複製する必要があります。何か問題が発生した場合は、クローンを破棄して最初からやり直すことができます。

于 2009-01-02T20:27:45.080 に答える
1

質問1:

PIDAIDEはかなり優れたMercurial統合を備えています。また、開発自体にもMercurialを使用しています。個人的には、いくつかのプロジェクトで約15の同時クローンが実行されており、IDEは正常に処理されます。ビルドスクリプトなどを微調整する手間がなく、「クローンを作成して実行」できます。

非常に簡単なので、多くの場合、次のようなバグ番号にクローンを作成します。

hgクローンhttp://pida.co.uk/hgpida-345

バグ#345の場合、修正する準備ができています。

アプリケーションの実際のチェックアウトディレクトリに応じてビルドスクリプトを微調整する必要がある場合、ビルドスクリプトは、ハードコードされたパスではなく、ある種のプロジェクト相対パスを使用する必要があると考えるかもしれません。

于 2008-12-31T17:41:08.267 に答える