1

プロジェクトのSVNリポジトリをフォークしていて、Mercurialリポジトリに統合する必要があります。簡単にするために、ローカルのhgsubversionリポジトリとローカルのhgリポジトリがあります。ただし、me​​rcurialリポジトリとhgsubversionリポジトリの両方defaultがデフォルトのブランチ名として使用します。ここでの私の目標は、元のコードと更新を1つのブランチに配置し、私のコードをdefaultブランチに配置することです。

しかし、私はまだこれを行うことができていません。

W:\programming\tcsite-svn-test>hg clone http://*HG_SITE*/hg .
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

W:\programming\tcsite-svn-test>hg branch blizzard
marked working directory as branch blizzard

W:\programming\tcsite-svn-test>hg commit

W:\programming\tcsite-svn-test>hg log
changeset:   0:be13a9580df0
branch:      blizzard
tag:         tip
user:        Leon Blakey <lord.quackstar@gmail.com>
date:        Fri Jan 14 23:44:25 2011 -0500
summary:     Created Blizzard Branch

W:\programming\tcsite-svn-test>hg pull http://*SVN_SITE*/svn/
pulling from http://*SVN_SITE*/svn/
....
pulled 23 revisions
(run 'hg update' to get a working copy)

W:\programming\tcsite-svn-test>hg branch
blizzard

W:\programming\tcsite-svn-test>hg branches
default                       23:93642a8890ab <------
blizzard                       0:be13a9580df0

当然のことながら、hgsubversionは、defaultブランチで本当に必要なときに、プルされたコミットをブランチに入れblizzardます。ドキュメントから、コミット元のブランチの名前を変更する方法はありません。

苛立たしいことに、hgsubversionリポジトリだけがプルされているレポでそれを行う方法を思いつくことすらできません。すべてのコミットは、何があってもその1つのブランチに関連付けられます。

SVNリポジトリから変更をプルし、ブランチの名前を別の名前に変更する方法についての提案はありますか?

4

1 に答える 1

5

ここにはいくつかのオプションがあります。

1 つには、組み込みの拡張機能 'convert' は、一方向の変換に対してはるかに柔軟であり、--branchmapオプションを使用してこれを簡単に処理できます。ただし、hgsubversion は svn に同期するための優れた機能を提供しますが、これは を使用している場合には提供されませんhg convert

この場合、命名スキームを変更することは可能でしょうか? default「svnからインポート」の場合に使用しlocal、ローカルの変更に使用するか、同様のものを使用しますか? その後、コードベース上の独立したプロジェクトに異なるブランチ名を付けることができます。私は過去に同様のメカニズムを使用しました。

編集: hgsubversion のドキュメントでこれをキャッチしました:

hgsubversion.branch

変換された変更セットをこのブランチに属するものとしてマークするか、指定されていない場合は default. このオプションは、標準レイアウトのクローンではサポートされていないことに注意してください。

「標準レイアウトのクローン」とは、/tags、/branches、/trunk を含むプロジェクト全体を通常の svn の方法でクローンすることをほぼ確実に意味します。

私がこれを正しく理解していれば、次のようなことができるはずです

hg --config hgsubversion.branch=blizzard clone <svn-repo/trunk>

svn から更新するたびにその --config 行を追加する必要があるかどうかはわかりませんが、少し実験して確認する必要があります。

何らかの理由でそれが機能しない場合は、hgsubversion.branchmap 機能も利用できます。

于 2011-01-15T07:25:55.950 に答える