0

元のSubversionリポジトリの作業コピーがあります。元のリポジトリで分岐やタグ付けなどを行わずに、作業コピー内の特定のファイルに実験的な変更を加えたい。

目標

  • 自由にオリジナルを簡単に指すことができるようにします。
  • 変更を元のリポジトリトランクにマージする意図はありません。
  • 多くの個別の「実験」をキャプチャし、必要なだけコードをキャプチャします
  • すべてを元のリポジトリから除外します。
  • 特定の元のリポジトリバージョンと同期する必要はありません。
  • 元のリポジトリの作業コピーから始めて、特定のフォルダーやファイルをターゲットにして、実験的なリポジトリに入れることができるようにしたいと思います。

詳細は悪魔です

私はそのexternal物件を知っています。これが鍵だと思いますが、うまくいかないので亀のインターフェースを誤用しているに違いありません。

  • 元のリポジトリの作業コピーで開始...
  • 実験的なリポジトリと最小限のフォルダ構造を作成しました
  • 実験したいフォルダに「チェックアウト」します。
  • ターゲットフォルダをRクリック/追加します。この時点で、カメはハングし、その後中止します。
  • ターゲットフォルダでR-クリック/プロパティを実行し、externalローカルパスとURLを使用してプロパティを作成します。
  • ターゲットフォルダをRクリック/更新...すると、カメがハングして中止します。
  • 元のフォルダから元に戻すために、そのフォルダを所定の場所に「エクスポート」しようとしました
  • 注:元のリポジトリへの管理者レベルのアクセス権がありません。

しないでください

  • StackOverflowを調査することをお勧めします
  • コードベースの完全なコピーを使用して実験的なリポジトリを作成することをお勧めします。
4

1 に答える 1

2

あなたが望むものを見てみましょう。後で参照できるように、番号を付けます...

  1. いつでも気軽にオリジナルに戻れるように。
  2. 変更を元のリポジトリ トランクにマージする意図はありません。
  3. 多くの個別の「実験」をキャプチャし、必要に応じて最小限のコードをキャプチャし、元のリポジトリからすべてを保持します。
  4. 特定の元のリポジトリ バージョンとの同期は不要です。
  5. 元のリポジトリの作業コピーから始めて、特定のフォルダーやファイルをターゲットにして実験的なリポジトリに移動できるようにしたいと考えています。

#2によると、このコードを元のコードにマージすることは決してありません。それはいいです。ブランチを持つことができ、それらに対して何もすることはありません。ポイント 4 によると、元のリポジトリに同期し直す必要さえありません。変更を加えたら、リポジトリから新しいものは必要ありません。

ポイント#1とポイント#3は私を混乱させます。自由にオリジナルに戻せるとはどういう意味ですか? 必要に応じて、元のレポの変更を自分のレポに入れる必要があるということですか? そして、多くの離散実験とはどういう意味ですか? 元の変更とは異なる方向性を試したいということですか?

ベースコードをチェックアウトして、独自のプライベートリポジトリを作成することを妨げているのは何ですか?

タグを作成してマークする元のコード ベースから何度も分岐するだけで、多くの個別の実験に分岐を使用できます。タグに戻るだけで、自由に元戻すことができます。

それはうまくいくでしょうか?

$ # First create the experimental repo
$ cd $HOME/my_repo
$ svnadmin create my_repo
$ # Now let's start it up
$ svnserve -r . -d
$ # Now, let's do a checkout and get some work done!
$ mkdir $HOME/my_workspace
$ cd $HOME/my_workspace
$ svn co svn://localhost my_project
$ cd my_project
$ # This is an empty directory. Let's fill it up!
$ svn mkdir trunk tags, branches
$ cd truck
$ # Now, get the revision you want and put it in your repository
$ svn export http://server.com/src/trunk/project .
$ # We have all of the code, let's add it to our repository
$ svn add *
$ cd ..
$ svn commit -m"Original code"   #This is  your original
$ # Now, we'll mark the original, so you can get back to it
$ svn cp -m"Tagging original" svn://localhost/trunk svn://localhost/tags/ORIGINAL

これで、独自のリポジトリができたので、変更は元のリポジトリには表示されません。ORIGINALそして、タグを探すことで元のソースに戻ることができます。

3つの実験をしましょう

$ svn cp -m"Experiment #1" svn://localhost/tags/ORIGINAL svn://localhost/branches/experiment_1
$ svn cp -m"Experiment #2" svn://localhost/tags/ORIGINAL svn://localhost/branches/experiment_2
$ svn cp -m"Experiment #3" svn://localhost/tags/ORIGINAL svn://localhost/branches/experiment_3

ORIGINALタグからどのように分岐したかに注目してください。そうすれば、元のコードに戻っていることがわかります。実験ごとにブランチが使用されていることに注意してください。それらの間でマージすることは決してないかもしれませんが、それは問題ありません。あるブランチから次のブランチにマージする必要があるということは何もありません。

また、実験が終了したら、いつでもブランチを削除できます。

$ svn delete svn://localhost/branches/experiment_1

svn lsこれはまだリポジトリにありますが、HEAD で実行すると表示されなくなります。ただし、必要に応じて引き続きアクセスできます。枝が散らかるのを防ぎますが、再び必要になった場合でも利用できます。

したがって、外部について心配する必要はありません。単に新しいリポジトリを作成し、コードをインポートして楽しんでください。

ただし、誰かが私のシステムでこのようなことをしたい場合は、通常、それを思いとどまらせ、元のリポジトリで操作できるブランチを提供します。たとえば、ボブに , というディレクトリを与えると/branches/BOB/trunkbranches/BOB/branches branches/BOB/tagsます。このように、これがボブのプライベート エリアであることが示され、ボブは遊んだり、好きなことをしたりできます。同時に、Bob はレポからコードを何度も取得でき、さらに新しいコードを取得することもできます。多くの人がこれを行いたい場合は、プライベート フォルダーを最初の階層に追加します。

/trunk
/branches
/tags
/private

そして、各ユーザーに /private の下に独自のディレクトリを与えます。ユーザーが他のユーザーのコードに触れるのを防ぐことができる pre-commit フックがあります。すべてをリポジトリに保持することで、柔軟性が向上します。ユーザーは、コードを共有したり、さまざまなリビジョンを作成したり、遊んだりすることができます。プライベートな実験をメイン リポジトリに保持することに問題があったことは一度もありません。

于 2012-05-10T14:34:53.730 に答える