0

2 つの異なるソースを持つ特定のフォルダーに対して SVN サブバージョン システム (ところで、私は Ubuntu 11.10 を使用しています) をセットアップし、変更を同時に追跡することは可能でしょうか?

状況は次のとおりです。

  1. (svn://... から) 定期的に更新されるオープン ソース プロジェクトがあります。これをベースとして、必要な機能を追加します。私には、変更を送信したり、開発者の svn でブランチを作成したりする権利がありません。

  2. コードの変更 ローカル svn (file:///usr/...) を介して変更内容を追跡します

私がやりたいことは、私のバージョンを公式の更新と時々マージすることですが、それでも私の個人的なローカル svn は保持します。設定方法を教えてください。

それとも、SVN (公式のサブバージョン用) + Git などの他のシステムを使用する方が簡単でしょうか?

p/s/ 私は、Subclipse プラグインを使用した Eclipse でのみ、自分でコードを作成しています。

更新1:

SVNの本を読んで、それがおそらく私の場合にブランチを作成する方法です:

初期インポート:

svn import /path/to/3rd-party-code \
          file:///usr/.../vendor/name/current \
          -m "importing initial 1.0 vendor drop"

タグを付ける:

svn copy file:///usr/.../vendor/name/current  \
         file:///usr/.../vendor/name/1.0      \
         -m "tagging name-1.0"

トランクに持ち込む:

svn copy file:///usr/.../vendor/name/1.0  \
         file:///usr/.../trunk/        \
       -m "bringing name-1.0 into the trunk"

次に、トランクからチェックアウトして、変更を開始します。では、「外部」によって物事はどのように変化するのでしょうか。

更新 2:

これは、すべてを最初から行う方法ですか:

svnadmin create /usr/.../svnrepo

svn import svn://path/to/3rd-party-code \
     file:///usr/.../svnrepo/name/branch/official \
     -m "importing initial XXXX rev. vendor drop"

svn copy file:///usr/.../svnrepo/name/branch/official  \
         file:///usr/.../svnrepo/name/trunk      \
         -m "bringing rev XXXX into the trunk"

svn propedit svn:externals svn://path/to/3rd-party-code name/branch/official

マージ:

svn merge -r XXXX:HEAD name/branch/official
svn ci -m "Merged YYYY official revision to trunk"

更新 3:

svnadmin create /usr/.../svnrepo

svn mkdir -m "Create folders" \
          file:///usr/../svnrepo/name/branches \
          file:///usr/../svnrepo/name/branches/official \
          file:///usr/../svnrepo/name/trunk

外観:

svn propedit svn:externals file:///usr/.../svnrepo/name/branches/official

(「svn://path/to/3rd-party-code」と入力)

svn copy file:///usr/.../svnrepo/name/branches/official  \
         file:///usr/.../svnrepo/name/trunk      \
         -m "bringing rev XXXX into the trunk"    

さて、問題は、トランクを「共同」すると、次の構造が得られることです。

official/svn:externals/folder1/file1

これは私が確かに望んでいないものです:)

マージ:

svn merge name/branches/official
svn ci -m "Merged YYYY official revision to trunk"
4

2 に答える 2

0

あなたの状況は、ベンダーブランチに関する章のSVNブックに記載されています。オープン ソース プロジェクトが SVN リポジトリも使用している場合は、さらに外部機能を利用できます。

于 2012-01-17T16:01:04.633 に答える
0

フォルダーに 2 つの異なるソースがあり、変更を同時に追跡することはできますか?

SVNでは実行できません-WCには1つのリポジトリに対して1つのパスがあります

しかし、あなたのタスクは svn:externals と "Vendor Branches" 戦略でカバーできます:

  • svn:externals として定義された外部プロジェクトの別のブランチ (URL で PEG-revision を使用しない)
  • あなたの開発はトランクで行われます
  • ブランチ (新しいリビジョンによる更新後) は定期的にトランクにマージされます
于 2012-01-17T16:03:19.157 に答える