多くの人と同様に、いくつかのプロジェクトを含むいくつかのSVNリポジトリがあります。私はいくつかの理由から、これらのリポジトリの1つをMercurialに変換することを決めました。Mercurialリポジトリを2つの別々のリポジトリに分散
instructions located hereを使用してリポジトリを変換しました。新しいhg repoにはすべてが含まれています。すべての履歴と正しいタグ。変換はうまくいった。
今、私は2つのプロジェクトを「分岐させる」必要がありますが、私は両側の歴史を維持したいと思います。誤ってチェンジセットを他のリポジトリにインポートするのを防ぐために、これを適切に行う方法があるかどうかは疑問です。
明らかに、各リポジトリには現在の変更セットの履歴が同じであることは気にしません(実際にはこれが必要です)。私はちょうど彼らが今から別のリポジトリであることを何とか示したいと思っています...
更新:誰かが--forceで詳述できますか?どの時点でその旗が必要になりますか。 http://www.selenic.com/mercurial/hg.1.htmlで、 "pull"の下で、-f、--forceオプションは "リモートリポジトリと無関係でも実行する"と表示されます。しかし、リポジトリと無関係なものは何ですか??更新
....関連の私には、私は元のリポジトリからクローン化されているので、彼らは(またはかもしれない):私は何を防ぐためにしようとしている、1つのレポは、後に他のレポに引っ張られることを可能にされますしばらく時間がかかりました。 (これは今の場合です)問題を作り出すスクリプトを書きました。そして、(これはWindowsのバッチファイルだ)私が起こることを望んでいない、まさに実現:
@echo off
REM - First, create two distinct repos.
REM - Add some files to each.
MD test1
MD test2
cd test1
hg init
REM - Do several writes and commits to give content to the repo.
echo This is some text for test1 > test1.txt
echo This iss some more text; blah blah; >> test1.txt
echo Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sapien velit, hendrerit sit amet ultrices nec, malesuada a mauris. Mauris eget nisi sit amet diam sodales tristique nec at turpis. Nam viverra pulvinar est, quis accumsan nunc fringilla ut. Nullam eu massa sapien, ac molestie magna. Curabitur nec pharetra nibh. Pellentesque velit dui, placerat vel porta eget, malesuada vitae dolor. In a lectus vel sapien imperdiet fringilla quis eu odio. Donec pellentesque ante nec est iaculis a aliquam nibh varius. Vivamus sit amet dolor non lorem ullamcorper ultricies quis in risus. Mauris eget orci leo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut lorem lacus. In hac habitasse platea dictumst. Mauris pellentesque purus non elit molestie vehicula. >> test1.txt
echo This is another text file for test1 > test2.txt
hg addremove
hg commit -m"First commit on test1"
echo Nunc mollis, neque vel tempus iaculis, eros erat egestas metus, vitae condimentum tortor tortor id sem. Integer ac ante quis nisl condimentum iaculis. Vestibulum et quam vel lectus porta ultricies. Donec ultricies dignissim sollicitudin. Morbi sit amet est urna, a bibendum felis. In aliquet, tortor nec consequat ultricies, sapien diam eleifend nulla, in ullamcorper eros sapien ac magna. Phasellus sit amet congue quam. Nulla gravida justo aliquam libero tristique non tempor nunc mollis. Suspendisse venenatis tincidunt massa, a tempus odio blandit non. Suspendisse egestas orci lorem. Curabitur bibendum nibh quis elit tempus id suscipit nisl viverra. Pellentesque placerat nisl at felis porta laoreet. >> test1.txt
hg commit -m"second commit on test1"
echo Nunc placerat cursus scelerisque. Sed ac magna lacus, quis facilisis elit. Praesent mattis purus in urna congue auctor. Fusce pellentesque scelerisque dictum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus vulputate nunc quis ante laoreet posuere. Curabitur ante turpis, blandit vitae dapibus vitae, convallis at tortor. Sed augue leo, fermentum id consequat et, accumsan in neque. In pellentesque luctus nisi, ac sagittis nisl condimentum tincidunt. Cras nec dui vitae purus adipiscing consectetur id at mi. Vestibulum quis est vitae purus dictum mollis. Phasellus ultrices rhoncus eleifend. Sed sit amet euismod orci. Curabitur id turpis tortor, nec mollis neque. Praesent egestas augue vitae sem fringilla at molestie lacus venenatis. >> test1.txt
hg commit -m"thrid commit on test1"
echo Suspendisse nec porta velit. Donec aliquet mi vel felis tempor vehicula vitae interdum quam. Phasellus tempor orci at ligula adipiscing sagittis. Quisque faucibus accumsan dui vel facilisis. Pellentesque laoreet quam vel nisl mattis ac venenatis sapien suscipit. Nam eget dictum risus. Proin quam magna, volutpat quis congue vitae, dapibus et mi. Etiam tempus purus ut massa sodales sed cursus odio ultrices. Ut vel dictum urna. Fusce blandit dignissim nibh a tempus. Nullam libero arcu, feugiat vel sollicitudin vitae, lacinia pulvinar enim. Nulla hendrerit faucibus tortor, sit amet convallis velit vehicula ut. Cras leo sem, fermentum eu adipiscing non, bibendum et lacus. Nulla volutpat tortor non libero feugiat fermentum id quis sem. Vivamus lobortis nibh quis diam semper feugiat. Phasellus ac lobortis purus. Vivamus at mi sem. Quisque accumsan consequat placerat. >> test1.txt
hg commit -m"fourth commit on test1"
cd ..
cd test2
hg init
echo Nala is a cat >> myCats.txt
hg addremove
hg commit -m"first commit on test2"
echo Simba is a cat >> myCats.txt
hg commit -m"2nd commit on test2"
echo Nanoon is a cat >> myCats.txt
hg commit -m"3rd commit on test2"
cd ..
REM ------------------------------------------------------------------------------------------------------------------------------------------------------
hg clone --pull test1 test-combined
cd test-combined
hg pull ../test2
echo -
echo You should have gotten a "abort: repository is unrelated" error.
echo this is from attempting to pull test2 in to the test-combined. Can't without --force flag.
echo This is another file for combined repo > combinedRepo.txt
echo This should be unique to test-combined >> combinedRepo.txt
hg addremove
hg commit -m"1st Change to combined repo"
echo Fusce lectus arcu, cursus et dictum et, ultrices ut magna. Cras ultrices leo ac arcu commodo auctor. Pellentesque commodo sem et elit euismod posuere. Nam cursus, nisl ut placerat tincidunt, diam ante congue felis, id facilisis sem eros nec augue. Phasellus vel interdum est. Nunc at tellus non dui aliquam placerat nec placerat augue. Vestibulum justo sem, laoreet et blandit eu, mollis a nibh. Cras convallis, turpis quis vulputate euismod, risus neque convallis dui, posuere eleifend dolor quam ut dui. Integer pharetra porttitor lorem, vitae commodo mi semper non. Duis ipsum nisi, vulputate vel cursus ut, consectetur eu tellus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce lobortis quam molestie leo scelerisque blandit. Ut massa neque, dapibus rutrum porta et, molestie vitae augue. Mauris eu erat a turpis suscipit viverra. Praesent vitae ante non dui volutpat ullamcorper eu in nisl. >> combinedRepo.txt
hg commit -m"2nd Change to combined repo"
cd .hg
rem - Replace the hgrc file where we blank out the default file.
echo [paths] > hgrc
echo default = >> hgrc
cd ..
cd ..
REM - We are not back in the starting folder...
REM ------------------------------------------------------------------------------------------------------------------------------------------------------
cd test1
echo A third file to make yet another commit in the repo. > myThirdFile.txt
hg addremove
hg commit -m"a third file to make this (test1) different than test-combined"
cd ..
REM - Retry the pull - Same source but diverged repos.
cd test-combined
hg pull ../test1
ECHO -
ECHO The pull just executed (in test-combined) succeeded but we want to prevent this.
ECHO Here is the log for test-combined
hg log
cd ..
@echo on
空のディレクトリを作成し、するには、コードブロック内のテキストを保存し、このを実行します。 cmdファイル。コマンドウィンドウを開き、ファイルに移動して.cmdを実行します。
あなたはログテキストの上に次のように表示されます:
は1つの ファイル(1頭)に1が変化して1つのチェンジセットを追加しましたが(実行が に頭を参照の頭はHG」、「HGマージ'to merge)
ログテキストには、2つのレポが実際に結合されていることが示されています。 私の理想的なソリューションでは、これはエラーまたは--forceフラグの要求をもたらしました。
更新(9/10/2009):hg convert
は私が必要とするものでは機能しませんでした。
hg convert --config convert.hg.saverev = 1を使用するだけで、擬似クローンを "無関係"とみなすことができます(元のチェンジセットIDに関する情報を保持するだけでなく)。しかし、サーバー側のフックを使用する私の他の提案は、より直接的でクリーンです。 –