2011-01-09 31 views
3

私はソースコントロールとしてANKHとTortoiseSVNでSVNを使用しています。私はプロジェクトに巨大な変更を書いており、変更を行うには数日かかりますが、その間はまだバックアップのためにしばらく時間をかけています。 しかし、私が他のチームメンバーをコミットすると、未完成の仕事で更新されます。他にチェックアウトをせずにSVNでコミットすることは可能ですか?

リビジョンを変更しないで「バックアップ用にコミット」できる方法はありますか(他のものは私の変更で更新されません)?

ありがとうございます! iconik'sコメントについては詳しく説明し

+3

ブランチを使用してください... – CMircea

+0

誰かがそれを言う必要があります。 :)これは、Mercurialのような分散型バージョン管理システムの使用を検討する良い理由です。あなたが望むほど頻繁にコミットし、準備ができたら押します。 –

+1

@Matthew:ローカルにコミットするだけなので、Pushを使わないコミットバックアップはMercurialでも動作しません。 – Avi

答えて

5

で見つけることができますこれは、feature branchesを使用するために、古典的なケースのように聞こえます。これにより、あなたの仕事は分かれていますが、Subversionの他のすべてのメリットを継続することができます。

+0

私が探していたものにかなり近いですね! :-) ありがとう! – TCS

3

:SVNの優れた機能の

一つは、解決策をbranchする機能です。 branchを作成すると、基本的にトランクから既存のコードをコピーして新しいリポジトリを作成しています。

このブランチで作業している間は、コードに何かを行うことができ、トランクには影響しません。すべての変更が完了したら、mergeブランチをトランクに戻すことができます。

しかし、あなたが作った同じブランチに他の人がいることはありえますが(まれですが)、そうしないと頼むことはできませんし、問題はないはずです。

詳細はこのSVN bookを読ん

+0

そのsvnの素晴らしい機能? Gitを試してみると、どのブランチがうまくいくか分かります。 Svnブランチはマージして重量がありません。さらにsvnによって盗まれたCVS機能。 – IAdapter

+1

SVNの魅力的な機能です。そして私は柔軟性のある 'git'がどれほどの柔軟性を持っているのか知っていますが、私の答えでそれを議論することはその質問に答えません。 – Omar

+0

ありがとう! :-) 私はブランチングよりも良い方法があると思っていたのですが、ブランチングがかなり痛いかもしれません! 見当たりません! :-) 再度、感謝します! – TCS

1

上記のコメントは合理的な回答です。変更のために別のブランチを作成して、それが正しくない(おそらくビルドさえしていないかもしれない)人が分かっているブランチを作成し、ブランチを再び結合することができます。これは苦しいプロセスになる可能性があることに注意してください。

実際、この種のことはSubversionにはうまく対応していません。 git、mercurial、bazaarなどの分散バージョン管理システムの大きな利点の1つは、メインリポジトリにすぐに送信することなく、バックアップ目的でローカルコミットを行うことができることです。したがって、DVCSクライアントをローカルにインストールすることでこれを二重化し、バックアップ用にローカルコミットするために使用することもできます。ほとんどのDVCSクライアントは、中央サーバがセットアップされていなくてもうまく動作するので、Subversionサーバとの競合を起こさずに使用できます。実際には、分散バージョン管理の利点を望んでいても、集中管理されたバージョン管理を使用している会社で働く開発者にとっては、かなり一般的な方法です。

0

はい、ブランチを使用してください(svnコピーを使用)。彼が残した部分は、1つのsvn mergeコマンドを使用すると、ブランチで行われたすべての変更を行い、それをトランクに適用することができます(すべてのマージは矛盾なく実行できます)。私はこのようにWebコンテンツにSVNを使用しました。私はすべてのWebの仕事をdevelブランチ(svnのコピー)を持っていた、私たちがライブに行く準備ができたら、私はトランク(ライブ)にsvnマージを行い、サーバーにトランクを展開します。

これはMercurialのような分散リポジトリシステムの1つ(これは素晴らしい製品ですが)を使用することに大きな利点があります。これは、ブランチがサーバー上にあり、より信頼性の高いハードドライブとより頻繁にバックアップ。あなたがローカルのMercurialリポジトリにコミットし、デスクトップコンピュータが死んだ場合、あなたの仕事は失われます。また、選択したグループとコラボレーションしたい場合(つまり、コードをトランクにプッシュする前にいくつかのQAが関わっていることを願っています!!!)、ブランチを指すことでそうすることができます。

1

他の人がコミットすることができないように、一定期間ブランチを「ロック」することは非常に便利です。例えば、ソフトウェアリリース用のビルドを行いながら、既知のバージョンなどが必要になります。 Subversionは「フック」メカニズムを提供しています。

http://svnbook.red-bean.com/en/1.1/ch05s02.html

あなたは「前」フックをコミットし、有効/様々な他のタスクと一緒にコミットを無効にし、「ポスト」またはを書くことができます。

+0

ブランチにいない場合は、トランクをロックしているので、チームの他のすべての開発者がそのプロジェクトで作業するのを止めることになります。私にとってカウンタ生産的な解決策のように聞こえる –

+0

はい - 賢明に使用されないと、生産性が低下する可能性があります。彼らは "偉大な力をもって大きな責任を負っている"と言っています:) –

関連する問題