0

開発をMercurialに切り替えましたが、hgsubversionを使用してSubversionサーバーと通信する必要があります。私は、subversionにすでに存在するすべてのプロジェクトについて、hgを使用してローカルで稼働しています。

私の質問はこれです:最終的に破壊に生きる新しいプロジェクトを作成するための最良のワークフローは何ですか?

私はhginitを使って新しいプロジェクトを立ち上げようとしましたが、その後、subversionにプッシュしました。しかし、私は道に迷い、それを機能させることができませんでした。私は、プロジェクトを直接Subversionに作成し、Mercurialの存在を完全に知らずに、hgsubversionでクローンを作成するのが最善のワークフローであると判断しました。しかし、もっと良い方法があるかどうか知りたいです。

その価値のために、subversionでは従来のtrunk / tags/branchesディレクトリ構造を使用しています。他の開発者はまだsvnを直接使用しています。

4

1 に答える 1

1

私は、プロジェクトを直接Subversionに作成し、Mercurialの存在を完全に知らずに、hgsubversionでクローンを作成するのが最善のワークフローであると判断しました。

それは最高であるだけでなく、可能なのは1つだけです。後で拡張機能が追加された初期化されたhgリポジトリと、[パス]のSubversionリポジトリはプル/プッシュでは機能しません


追加(@ bigh_29のコメントへの返信)

はい、Mercurialから空のSubversionリポジトリ(デフォルトのdirmapのみが作成されています)で作業を開始すると、予期しない予測できない結果も得られます。

初期状態:

  • TSVNを使用してローカル(file:///)SVN-repoおよびtrunk / branchs / tagsツリーを作成しました(ツールは関係ありません)

svn log file:///Z:/SVN

------------------------------------------------------------------------

r1 | Badger | 2013-01-09 12:00:10 +0600 (Ср, 09 янв 2013) | 1 line

Imported folder structure

------------------------------------------------------------------------

  • クローンリポジトリ(リポジトリルートから)からMercurialへ

hg clone file:///Z:/SVN z:\HG

[r1] Badger: Imported folder structure
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

(OK、Mercurialは空のdirを追跡しないので、チェンジセットに保存するものはありません)

hg log -R z:\hg空の出力を生成する

  • 通常のワークフローテスト-追加、コミット、プッシュ(TortoiseHG最新)

    % hg add --repository Z:\HG Z:\HG\Intro.txt

    [command completed successfully Wed Jan 09 12:17:31 2013]

    % hg commit ...

    Intro.txt

    committed changeset 0:0a3fc4a9213d

    [command completed successfully Wed Jan 09 12:17:31 2013]

    % hg --repository Z:\HG push file:///Z:/SVN

    pushing to file:///Z:/SVN

    searching for changes

    no changes found

    [command completed successfully Wed Jan 09 12:18:02 2013]

「変更は見つかりませんでした」-悪い、非常に悪いニュース。MercurialとアップストリームSubversionで異なる履歴を取得しました

>hg log

changeset:   0:0a3fc4a9213d
summary:     Added file

svn log file:///Z:/SVN
------------------------------------------------------------------------
r1 | Badger | 2013-01-09 12:00:10 +0600 (Ср, 09 янв 2013) | 1 line

Imported folder structure
------------------------------------------------------------------------
  • SVNWCからSubversionにファイルを追加してみてください

>svn log file:///Z:/SVN

------------------------------------------------------------------------

r2 | Badger | 2013-01-09 12:22:38 +0600 (Ср, 09 янв 2013) | 1 line

Added main file

------------------------------------------------------------------------

r1 | Badger | 2013-01-09 12:00:10 +0600 (Ср, 09 янв 2013) | 1 line

Imported folder structure

------------------------------------------------------------------------

  • SVNからプル(実際にフェッチ)

hg --repository Z:\HG fetch --verbose file:///Z:/SVN

pulling from file:///Z:/SVN

[r2] Badger: Added main file

A trunk/Topic.txt

Topic.txt

committed to "default" as fc8bf55ea98f

pulled 1 revisions

updating to 1:fc8bf55ea98f

resolving manifests

removing Intro.txt

getting Topic.txt

1 files updated, 0 files merged, 1 files removed, 0 files unresolved

merging with 0:0a3fc4a9213d

resolving manifests

getting Intro.txt

1 files updated, 0 files merged, 0 files removed, 0 files unresolved

Intro.txt

new changeset 2:98c16d1829d8 merges remote changes with local

  • 醜い地元の歴史を手に入れた

プル後にログに記録する

それでもプッシュできません(「申し訳ありませんが、マージリビジョンのsvn親が見つかりません。」):0には元の親がありません

ただし、SVNのツリーにファイルを追加する場合(空の.hgignore、とにかくMercurialリポジトリに表示される必要があります)

> svn log file:///Z:/SVN -q -v
------------------------------------------------------------------------
r2 | Badger | 2013-01-09 13:44:47 +0600 (Ср, 09 янв 2013)
Changed paths:
   A /trunk/.hgignore
------------------------------------------------------------------------
r1 | Badger | 2013-01-09 13:43:27 +0600 (Ср, 09 янв 2013)
Changed paths:
   A /branches
   A /tags
   A /trunk
------------------------------------------------------------------------

クローンの後、私は

>hg log
changeset:   0:71c7bc7bce68
tag:         tip
user:        Badger@1d57b098-00df-af47-a2e3-c1451e4b2f8d
date:        Wed Jan 09 07:44:47 2013 +0000
summary:     Added needed for successful cloning hgignore

追加された|コミットされたファイルは、頭痛の種なしにSubversionにプッシュされました

% hg --repository Z:\HG push file:///Z:/SVN
pushing to file:///Z:/SVN
searching for changes
[r3] Badger: File from Mercurial
pulled 1 revisions
nothing to rebase
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

svn log file:///Z:/SVN -q -v -r "HEAD"
------------------------------------------------------------------------
r3 | Badger | 2013-01-09 13:59:15 +0600 (Ср, 09 янв 2013)
Changed paths:
   A /trunk/Test.txt
------------------------------------------------------------------------

注: SVN-originでMercurialブランチを使用するテストに失敗しました:このブランチに保存された作成された(名前付き)ブランチチェンジセットはSubversionにプッシュした後に消えました(そしてチェンジセットは予期された/ branchs / BRANCHNAMEの代わりにトランクに表示されます)

于 2013-01-08T19:43:25.097 に答える