2012-02-17 2 views
1

私は、履歴が(trunk /で始まり、サブプロジェクト/トランクに移動した)ルートの一部を移動したリポジトリで作業しています。今すぐできるですサブプロジェクト/トランク(https://bitbucket.org/durin42/hgsubversion/issue/135/move-trackingを参照)に移動した時点までのすべての履歴を処理するhgsubversionを使用します。または hg convertまたはrebaseを使用して履歴を1つの結合リポジトリにスプライスすることができます。手動で構築されたリポジトリにhgsubversionを(再)接続することは可能ですか?

hg svn rebuildmetaをスプライスして呼び出すと、hgsubversionはすべて混乱します。 svnリポジトリの新しいリビジョンは "../"というブランチに引き込まれます。

基本的には、hgsubversionに参照ポイントとして特定のsvnリビジョンを使用するように指示することは可能でしょうか?その時点からの履歴を同期させようと試みるだけですか?ここで

は、問題を示す小さなテストです(DOSのために残念コマンド)

C:\hgtest>svnadmin create svnrepo 

C:\hgtest>svn co file:///C:/hgtest/svnrepo svncheckout 
Checked out revision 0. 

C:\hgtest>cd svncheckout 

C:\hgtest\svncheckout>mkdir trunk/ 
The syntax of the command is incorrect. 

C:\hgtest\svncheckout>svn mkdir trunk 
A   trunk 

C:\hgtest\svncheckout>cd trunk 

C:\hgtest\svncheckout\trunk>echo "Test file version 1" > testfile.txt 

C:\hgtest\svncheckout\trunk>cd .. 

C:\hgtest\svncheckout>svn add trunk\testfile.txt 
A   trunk\testfile.txt 

C:\hgtest\svncheckout>svn ci -m "Original version in trunk configuration" 
Adding   trunk 
Adding   trunk\testfile.txt 
Transmitting file data . 
Committed revision 1. 

C:\hgtest\svncheckout>svn mkdir subproject 
A   subproject 

C:\hgtest\svncheckout>svn mv trunk subproject 
A   subproject\trunk 
D   trunk 
D   trunk\testfile.txt 

C:\hgtest\svncheckout>svn ci -m "Moved trunk to subproject/trunk" 
Adding   subproject 
Adding   subproject\trunk 
Deleting  trunk 

Committed revision 2. 

C:\hgtest\svncheckout>echo ". Adding some text to distinguish the subproject/trunk version of this file" >> subproject\trunk\testfile.txt 

C:\hgtest\svncheckout>svn ci -m "Final version of testfile.txt" 
Sending  subproject\trunk\testfile.txt 
Transmitting file data . 
Committed revision 3. 

C:\hgtest\svncheckout>svn log subproject\trunk\testfile.txt 
------------------------------------------------------------------------ 
r3 | kmahan | 2012-02-17 09:18:23 -0800 (Fri, 17 Feb 2012) | 1 line 

Final version of testfile.txt 
------------------------------------------------------------------------ 
r2 | kmahan | 2012-02-17 09:17:40 -0800 (Fri, 17 Feb 2012) | 1 line 

Moved trunk to subproject/trunk 
------------------------------------------------------------------------ 
r1 | kmahan | 2012-02-17 09:14:46 -0800 (Fri, 17 Feb 2012) | 1 line 

Original version in trunk configuration 
------------------------------------------------------------------------ 

C:\hgtest>hg clone svn://localhost:22222/subproject/trunk hgrepo 
[r2] kmahan: Moved trunk to subproject/trunk 
[r3] kmahan: Final version of testfile.txt 
pulled 2 revisions 
updating to branch default 
1 files updated, 0 files merged, 0 files removed, 0 files unresolved 

C:\hgtest>cd hgrepo 

C:\hgtest\hgrepo>dir 
Volume in drive C is OSDisk 
Volume Serial Number is 74C7-4865 

Directory of C:\hgtest\hgrepo 

02/17/2012 09:30 AM <DIR>   . 
02/17/2012 09:30 AM <DIR>   .. 
02/17/2012 09:30 AM <DIR>   .hg 
02/17/2012 09:30 AM    104 testfile.txt 
       1 File(s)   104 bytes 
       3 Dir(s) 1,705,932,423,168 bytes free 

C:\hgtest\hgrepo>hg log --follow testfile.txt 
changeset: 1:eae92a250a90 
tag:   tip 
user:  [email protected] 
date:  Fri Feb 17 17:18:23 2012 +0000 
summary:  Final version of testfile.txt 

changeset: 0:10c6ad198001 
user:  [email protected] 
date:  Fri Feb 17 17:17:40 2012 +0000 
summary:  Moved trunk to subproject/trunk 


C:\hgtest>hg clone svn://localhost:22222/trunk -r 1 original-location 
[r1] kmahan: Original version in trunk configuration 
pulled 1 revisions 
updating to branch default 
1 files updated, 0 files merged, 0 files removed, 0 files unresolved 


C:\hgtest>cd hgrepo 

C:\hgtest\hgrepo>hg pull -f ..\original-location 
pulling from ..\original-location 
searching for changes 
warning: repository is unrelated 
requesting all changes 
adding changesets 
adding manifests 
adding file changes 
added 1 changesets with 0 changes to 1 files (+1 heads) 
(run 'hg heads' to see heads, 'hg merge' to merge) 

C:\hgtest\hgrepo>hg log 
changeset: 2:f968692b6301 
tag:   tip 
parent:  -1:000000000000 
user:  [email protected] 
date:  Fri Feb 17 17:14:46 2012 +0000 
summary:  Original version in trunk configuration 

changeset: 1:eae92a250a90 
user:  [email protected] 
date:  Fri Feb 17 17:18:23 2012 +0000 
summary:  Final version of testfile.txt 

changeset: 0:10c6ad198001 
user:  [email protected] 
date:  Fri Feb 17 17:17:40 2012 +0000 
summary:  Moved trunk to subproject/trunk 


C:\hgtest\hgrepo>hg rebase -s 0 -d 2 
saved backup bundle to C:\hgtest\hgrepo\.hg\strip-backup\10c6ad198001-backup.hg 

C:\hgtest\hgrepo>hg log 
changeset: 1:ee10af28394f 
tag:   tip 
user:  [email protected] 
date:  Fri Feb 17 17:18:23 2012 +0000 
summary:  Final version of testfile.txt 

changeset: 0:f968692b6301 
user:  [email protected] 
date:  Fri Feb 17 17:14:46 2012 +0000 
summary:  Original version in trunk configuration 

C:\hgtest\hgrepo>hg svn rebuildmeta 

C:\hgtest\hgrepo>hg pull 
pulling from svn://localhost:22222/subproject/trunk 
[r2] kmahan: Moved trunk to subproject/trunk 
Marked branch ../ as closed. 
[r3] kmahan: Final version of testfile.txt 
no changes found 

C:\hgtest\hgrepo>echo "Here's some more text" >> testfile.txt 

C:\hgtest\hgrepo>hg ci -m "Test commit from mercurial side" 

C:\hgtest\hgrepo>hg glog 
o changeset: 5:a0e38c8fcfaf 
| branch:  ../ 
| tag:   tip 
| user:  [email protected] 
| date:  Fri Feb 17 17:43:38 2012 +0000 
| summary:  Added new text from the svn side 
| 
o changeset: 4:39fe2d8d743c 
| branch:  ../ 
| parent:  0:f968692b6301 
| user:  [email protected] 
| date:  Fri Feb 17 17:18:23 2012 +0000 
| summary:  Final version of testfile.txt 
| 
| o changeset: 3:4a494fcf85f1 
|/ branch:  ../ 
| parent:  0:f968692b6301 
| user:  [email protected] 
| date:  Fri Feb 17 17:17:40 2012 +0000 
| summary:  Moved trunk to subproject/trunk 
| 
| @ changeset: 2:547ed469c516 
| | user:  Kyle Mahan <[email protected]> 
| | date:  Fri Feb 17 09:33:07 2012 -0800 
| | summary:  Test commit from mercurial side 
| | 
| o changeset: 1:ee10af28394f 
|/ user:  [email protected] 
| date:  Fri Feb 17 17:18:23 2012 +0000 
| summary:  Final version of testfile.txt 
| 
o changeset: 0:f968692b6301 
    user:  [email protected] 
    date:  Fri Feb 17 17:14:46 2012 +0000 
    summary:  Original version in trunk configuration 

答えて

2

はい、ただしこれは手動処理になります。各ブランチの最高水準点のリビジョンを見つけ、それをメタデータファイルに記録する必要があります(その名前は現時点では私を逃しています)。その時点では、ほとんどのことがうまくいくはずです。

注:これは理論です。私はコードの記憶に基づいて動作するはずですが、テストしたことはありません。

+0

提案していただきありがとうございます。最高水準点を言うとき、それは同期していた最初の時点を意味しますか? – kylewm

+0

には、これらの種類のsvn move操作のサポートが含まれています。これは状況によっては非常に頻繁に起こります。私の場合は、最初にApache™Bloodhoundのhgミラーを維持していました。最初はインキュベーター領域https://svn.apache.org/repos/asf/incubator/bloodhoundを指していました。 [プロジェクトは卒業しました](http://goo.gl/fb/7y1gC)ので、現在https://svn.apache.org/repos/asf/bloodhoundにあります。引っ張ると、私は_abortを取得します:リポジトリ内の別のパスで作業できません。これは、ほとんどすべての新しいASFプロジェクトで発生します。何ができますか? –

0

それはその基準点として特定のsvnのリビジョンを使用するhgsubversionを伝えることが可能です場合は基本的に、私は思ったんだけどその時点からの履歴を同期させようと試みるだけです。

正しく理解していれば、クローンコマンドの--startrevオプションが必要でした。 hg help subversion

からは時々、過去のリポジトリの歴史はほとんど、あるいは全く関心がある、と すべて1が欲しい今日から開始し、前方に働くことです。 "--startrev HEAD"を使用すると、最初のクローンは最新の リビジョンだけを変換します。後で引っ張ると、後続のすべてのリビジョンが変換されます。 これは単一ディレクトリクローンでのみ有効であることに注意してください。

+0

ありがとうございます。私は実際には逆の問題があります:私はhgの完全な履歴にアクセスしたいと思いますが、まだ新しいチェンジセットをSubversionリポジトリにプッシュできるようになります。私は手動でsvnとhgリポジトリをルート以外のいくつかのリビジョンに関連付ける方法があるかもしれないかどうか把握していました。 – kylewm

関連する問題