0

プロジェクトにパッケージ化されたプラグインの 1 つをフォークしたい、「プラグイン」をサポートする SVN プロジェクトを見ています。svn ツリーのそのサブディレクトリのみをフォークするにはどうすればよいですか? 可能であれば、後の変更を上流にマージできるようにしたいと考えています。(これはどうしようもなく不可能なので意味がないと思います。) 履歴を取得するのはいいことですが、オプションです。

特に、hg リポジトリの管理に最も慣れていますが、bzr、git、および darcs も使用しました。

4

1 に答える 1

1

リポジトリをどのように編成するかについては、2つの主要なSVN規則があります(これらは単なる規則であり、そのように行う必要はないことに注意してください)。

repo_root -
   trunk - Project1
         - Project2
         ...
   branches - 
         - branch1
            - Project1
            - Project2
            ...
         - branch2
            - Project1
            - Project2
            ...
         ...             
   tags - 
         - tag1
            - Project1
            - Project2
            ...
         - tag2
            - Project1
            - Project2
            ...
         ...

また:

repo_root -
   - Project1
     - trunk -
     - branches -
       - branch1 -
       ...
     - tags -
     ...
   - Project2
   ...

リポジトリがすでに2番目の方法で編成されていて、プラグインが別のプロジェクトである場合は、それを分岐するだけです(必要svn copy repo_root/Project/trunk repo_root/Project/new_branchに応じて、http、svnなどを挿入します)。

リポジトリが最初の方法、または2番目の方法で編成されているが、プラグインが独自のトランク/ブランチ/タグを持つ別個のプロジェクトではない場合は、プラグインのみを含むブランチを作成できますsvn copy --parents repo_root/trunk/[path_prefix]/plugin repo_root/branches/new_branch/[path_prefix]/plugin

次に、トランク(または他のブランチ)からこのブランチに、プラグインに加えられた変更のみをマージするように注意する必要があります(たとえばsvn merge repo_root/trunk ...、ではなくsvn merge repo_root/trunk/[path_prefix]/plugin ...)。

通常の(たとえば、完全なトランクまたはブランチ)SVNのブランチとマージよりも多くの問題が発生することはありません。

重要な注意事項:プラグインがプロジェクトの他の部分に依存している場合(おそらくそうです)、ブランチで開発するときに、混合作業コピーを維持する必要があります:トランクをチェックアウトし、プラグインディレクトリにcdして、実行しますsvn switch ^/branches/new_branch/[path_prefix]/plugin

于 2012-05-14T03:48:52.937 に答える