5

私は、CodePlex の Subversion プロジェクトで作業する際に自分自身を問題に陥れまし。私にはローカル リポジトリがあり、CodePlex にはプロジェクト用のインターネット リポジトリがあり、2 つが混在していません :-(.

しかし、亡くなった親愛なる父は、賢い人と賢い人の違いは、賢い人が抜け出す方法を見つける罠に賢い人は入らないということだと私によく言っていました。言い換えれば、私は何か間違ったことをしていたに違いありません。そう:

あなたが数人の開発者のグループだとしましょう。変更を開始したい Subversion 制御のプロジェクトがインターネット上にあります。ローカルで作業し、ニーズに合わせて変更したい。ローカルのバージョン管理が必要です。リポジトリに受け入れるインターネットの変更、つまり、関連性があり重要で、ノイズの原因とならないものを制御したいと考えています。あなたは自分のローカルな変更のいくつかをインターネットにコミットしたいと考えています。それらは安定しており、コミュニティ全体に関連していると確信しています。

この操作方法は私には常識のように思えますが、オープン ソース プロジェクトに取り組んだことはありません。では: 1. これは本当に一般的な操作方法ですか? 2. Subversion でトラブルに巻き込まれることなくそれを行うにはどうすればよいですか?

4

6 に答える 6

1

Subversion は本質的に集中型のリビジョン管理システムです。あなたの説明から、分散リビジョン管理システムが必要なようです。このようなシステムでは、ユーザーはローカルで開発を行い、作業単位 (変更セットと呼ばれる) を相互に交換できます。分散リビジョン管理システムは、これをサポートするためにブランチをマージするための優れたサポートを備えています。

私はMercurialを使用していますが、そのコマンドの多くが Subversion のコマンドに似ているため、Subversion ユーザーには Mercurial をお勧めします。このカテゴリのその他の一般的なツールには、GitBazaarがあります。

于 2009-06-25T21:03:58.430 に答える
0

元のリポジトリにコードのブランチを作成することを検討する必要があるようです。必要に応じて、トランクからブランチにマージしたり、その逆にマージしたりできます。

もう 1 つのオプションは、リポジトリからファイルをエクスポートして、独自のリポジトリに追加することです。しかし、それは将来的に苦痛になるだけです。

于 2009-06-25T21:03:12.207 に答える
0

これは、git などの分散ソース管理システムを使用すると、はるかに簡単になります。

その後、ローカルの git リポジトリを作成し、git-svn を使用してパブリック リポジトリから更新を取得し、特別な調整を加えた独自のローカル ブランチを作成できます。

このような多くのプロジェクト (git を使用してサブバージョン化された OSS プロジェクトを拡張する) を github で見ることができます - NHibernate、Castle プロジェクトなど。

SVN に固執する必要がある場合は、パブリック トランクを介して一連のパッチ ファイルを使用して独自の変更を管理できます。トランクから新しいものが必要な場合は、変更を加えたパッチを作成し、元に戻し、新しいトランクに更新してから、パッチを選択的に適用します。

于 2009-06-25T21:03:12.473 に答える
0

私は通常、リポジトリから更新されたコードと、私が取り組んでおり、コミットする予定のコードのみを含む、SVN から取り込んだ 1 つのコピーを保持します。

新しい機能に取り組むときは、コピー全体をマシンの新しいコピーにエクスポートしてから、必要な変更を加えてテストします。変更を元に戻すことにした場合は、ある種のマージ ツール ( Windows の場合はWinMergeが便利です) を使用して、元の SVN で更新されたフォルダーに変更をマージします。

これにより、意図しないコードのコミットを比較的簡単に回避できるため、すべてがきれいに保たれます。また、SVN で更新された「ベース」フォルダーの新しいコピーを作成するだけで、変更を簡単に廃棄することもできます。欠点は、一度にコミットする予定のない複数の機能に取り組むのが比較的扱いにくくなることです。

于 2009-06-25T21:03:30.710 に答える
0

あなたが数人の開発者のグループだとしましょう。変更を開始したい Subversion 制御のプロジェクトがインターネット上にあります。ローカルで作業し、ニーズに合わせて変更したい。ローカルのバージョン管理が必要です。リポジトリに受け入れるインターネットの変更、つまり、関連性があり重要で、ノイズの原因とならないものを制御したいと考えています。

ローカルで作業し、何も考えずにブランチまたはマージできるようにしたいと考えています。あなたは基本的に分散バージョン管理について話している。Subversion はこれをサポートしていません。代わりにMercurialGitなどを使用する必要があります。

于 2009-06-25T21:01:16.050 に答える