2012-01-25 2 views
1

私は職場でSVNに移行しましたが、Mercurialにプッシュしましたが、ここで働いている他の誰もそれについて聞いたことがないという理由で拒否されました。開発者はSVNを使用して分岐を進めています

私の現在の作業では、新しいソース管理システムでうまくいくために、カスタマイズされたC++ビルドシステムから生き残るために、私はハックする必要があります。これにはコードベースを大幅に変更する必要があります。いくつかのプライベートエリアへ

  • 支店トランク:

    私は達成するために苦労していたワークフローはこれです。

  • 主要な構造ツリーがハック
  • を変更
  • 含むハック、ハック
  • はバックトランクに最終結果をマージします。しかし、私は、このコードに取り組んで唯一の男だので、それが必要ではない、このプロジェクトのために、定期的にトランクから私の作業ブランチを更新することができることだろう持って

素敵。

ここに、このワークフローを達成する際に見られる問題があります。

私たちのSVNリポジトリは、次のように構成されています

SVN 
    \_ Project1 
     \_ trunk 
     \_ branches 
     \_ tags 
     \_ shelves 
      \_ dev1 
      \_ dev2 
    \_ Project2 
    . . . 
    \_ Project3 
    . . . 

プロジェクト2と3は、我々は、開発者が分岐しにコミットできるようになることを期待して棚のディレクトリを作成したプロジェクトの1と同じディレクトリ構造を持っていますGitまたはMercurialを使用するのと同じ方法で開発を支援します。残念ながら、私はこれがSVNを使用して動作する方法はありません。問題は、物事がSVNにコミットされると、他のユーザーがそれを無視する方法がないことです。だからProject1-> shelves-> Dev1の2つか3つの作業を進行ブランチで作成した場合、次にProject1またはリポジトリ全体の作業コピーを誰かが更新すると、新しいブランチごとに待つ必要があるため、ダウンロードする。新しいブランチごとに更新するのに約5分かかります。そのため、1日かそれ以上の新しい作業を毎日作成している開発者の半数が、毎日ブランチをしています。

もしも各開発者が他の開発者を無視するようにSVNをローカルに設定することができれば、完璧なブランチディレクトリを処理していますが、これを行う方法はまったくありません。

私の他の研究方法は、MercurialまたはGitを使ってSVN(Mercurialをhgsubversionとgitでgit-svnを使って)から直接チェックアウトすることでした。これらのアプローチは両方とも、開発ブランチをSVNにコミットする必要があるブランチに統合することから生じる複雑さを持っていますが、その複雑さにもかかわらず、いくつかの約束を抱いています。それまで、私はいくつかのテストを行い、hgsubversionもgit-svnもSVNファイルの外観に気づかなかったことを発見しました。また、Gitでのファイルの名前変更/移動がSVNで正しくコミットされないというファイルの履歴が失われる可能性があります。

だから今私が見ているのはこれです。

  • SVNを使用してソースをチェックアウトします。
  • ソースを新しいディレクトリにコピーします。
  • hg私がハックすることができるMercurialの作業ディレクトリを与える新しいディレクトリ。
  • 私が終了したら、KDiff3を使って最終的なMercurial作業コピーを元のSVNソースと比較します。
  • SVN move/rename/deleteを使用して、構造の変更を手動で修正します。
  • SVNソースのMercurial作業コピーをコピーし、SVNにコミットします。

もっと良い方法が必要です。誰かが私にそれを見つけるのを手伝ってください!

答えて

1

通常はあなたがそのようなリポジトリ全体をチェックアウトしません - あなただけの上で作業しているブランチをチェックアウト(と枝の間を移動するのsvnスイッチを使用)したい

+0

YAHは、あなたが全体をチェックアウトすることはありませんSVNでレポ。それがあなたが働いている人がやっていることなら、あなたはそれらを止める必要があります。 –

関連する問題