私はサブリポジトリを読んでいて、ローカルでいくつかのテストを実行していますが、これまでのところ問題なく動作しているようですが、1つ質問があります。
特定のサブリポジトリに使用するチェンジセットを指定/制御するにはどうすればよいですか?
たとえば、次の2つのプロジェクトがあるとします。
class library application
o fourth commit o second commit, added a feature
| |
o third commit o initial commit
|
| o second commit
|/
o initial commit
ここで、アプリケーションのサブリポジトリとしてクラスライブラリが必要ですが、最長のブランチ(4番目のコミットとして終了するブランチ)が未成熟であるため、一時的に「2番目のコミット」のヒントを使用したいと思います。
それが可能であると仮定して、それを構成するにはどうすればよいですか?
上記の2つのリポジトリを設定し、ライブラリをサブリポジトリとして追加するバッチファイルを次に示します。
バッチファイルを実行すると、次のように出力されます。
[C:\Temp] :test
...
v4
その最後の行からわかるように、クラスライブラリ内のファイルの内容を確認します。これは4番目のコミットからの「v4」です。「v2」にし、クラスライブラリリポジトリから新しいバージョンをプルダウンする準備ができるまで「v2」のままにしておきます。
私がやりたいことができるかどうか、もしそうなら、サブリポジトリを正しいチェンジセットにロックするために何をする必要があるかを誰かに教えてもらえますか?
バッチファイル:
@echo off
if exist app rd /s /q app
if exist lib rd /s /q lib
if exist app-clone rd /s /q app-clone
rem == app ==
hg init app
cd app
echo program>main.txt
hg add main.txt
hg commit -m "initial commit"
echo program+feature1>main.txt
hg commit -m "second commit, added a feature"
cd ..
rem == lib ==
hg init lib
cd lib
echo v1>lib.txt
hg add lib.txt
hg commit -m "initial commit"
echo v2>lib.txt
hg commit -m "second commit"
hg update 0
echo v3>lib.txt
hg commit -m "third commit"
echo v4>lib.txt
hg commit -m "fourth commit"
cd ..
rem == subrepos ==
cd app
hg clone ..\lib lib
echo lib = ..\lib >.hgsub
hg add .hgsub
hg commit -m "added subrepo"
cd ..
rem == clone ==
hg clone app app-clone
type app-clone\lib\lib.txt
編集:わかりました。 @VonCに感謝します。次のセクションをバッチファイルのrem == clone ==
行の上に追加して再実行すると、サブリポジトリが正しいチェンジセットにロックされます。
rem == lock ==
cd app\lib
hg update 1
cd ..
hg commit -m "lock to second commit"
cd ..