3

ラップトップの変更に取り組んでいます。まだリポジトリに提出する準備ができていませんが、デスクトップでも作業を続けたいと思っています。私の変更セットは非常に大きく、変更が含まれているだけでなく、新しいファイルと削除されたファイルも含まれています。

ローカルの作業用コピー全体を別のマシンにコピーして、変更を適用することができました。ただし、それは汚い解決策のように思えます (別のマシンでメタデータを汚染しているため)、ビルド アーティファクトも不必要に転送しています。

TortoiseSVN を使用して .patch ファイルを転送しようとしましたが、「パッチは古いリビジョンに属しています」(真実ではなく、なぜ気にするのですか?) または「行が一致しません」(私が変更したため一致しません) と不平を言い続けます。「継続的なエラーポップアップ」の経験はまったく好きではありませんでした.

Cygwin をインストールしたくないので、コマンドライン パッチは論外です。

最後のオプションは、この機能の新しいブランチをフォークして、「チェックイン/更新」のループに入ることだと思います。しかし、これらはトラックの歴史に示されており、そこで汚染を引き起こしています。

より良いアイデアはありますか?それとも私が行方不明ですか?

4

8 に答える 8

7

新しいブランチを作成してsvn switchを使用してみましたか。最初の作業リビジョンから分岐した場合は、リポジトリの別の部分に転送され、変更が維持されます。

于 2009-02-21T22:49:40.130 に答える
6

別のアプローチとして、 GITをミックスに追加できます。GIT の分散型ソース コード管理モデルを使用すると、デスクトップとラップトップの間で変更セットをやり取りできます。また、GIT は変更セット情報をローカル ファイルシステムで管理するため、いずれかの側で行っているコミットは、TRAC システムが監視しているストリームには表示されません。

したがって、基本的に「subversion でオフライン」になり、GIT コミットを使用して作業を完了します。完了したら、キット全体と kaboodle を Subversion トランクにチェックインします。

機能ブランチは Subversion では軽量であり、このような機能固有の作業を隔離するのに最適です。Subversion 1.5 以降を使用している場合、同期とマージのプロセス全体が 1.4 の場合よりもはるかに簡単になります。

于 2009-02-21T22:51:03.700 に答える
5

分岐はクリーンなソリューションです。また、この大きな変更に取り組んでいる間、バックアップできるという利点もあります。言うまでもなく、マシン間の将来の変更の簡単な同期。

ただし、作業ディレクトリ全体を圧縮して、他のマシンのどこかにダンプするだけで、おそらくうまくいくでしょう。

于 2009-02-21T22:46:47.657 に答える
1

この目的のために一時的なブランチを作成します。この方法では、自由に SVN ツールを使用するだけで、メタメタを汚染したり、アーティファクトをコピーしたりすることはありません。

さらに、間隔を空けてコードをチェックインしているように見えます。また、ブランチを作成することで、ハード ドライブがクラッシュした場合のデータ損失も防ぐことができます。

于 2009-02-21T22:47:12.647 に答える
1

最後のオプションではなく、最初のオプションです。実際に非常に多くの変更がある場合は、かなり前に機能ブランチを作成しておく必要があります。

サーバー上の作業コピーからブランチディレクトリへのsvnコピーを実行することでこれを行うことができるため、「チェックイン/更新のループ」は必要ありません.1回のチェックイン、1回の更新/切り替えだけです。

同様に svn copy MyWorkingCopy svn://theserver/project/branches/features/my-feature-branch

于 2009-02-21T22:47:21.290 に答える
1

デスクトップにレプリカが必要な場合は、Live Sync がそのシナリオに最適です。ラップトップと 2 台のデスクトップにチェックアウト フォルダーを複製するようにセットアップしました。これにより、3 台のマシンでまったく同じ状態が得られます。そして、それはすべてバックグラウンドで継続的に行われます。

または、ブランチに移動して、デスクトップに移動する前にラップトップで変更をコミットすることを忘れないようにすることもできます。:-)

編集:コメントに応えて - はい、2 台のマシンが同期中にファイルの編集を開始すると、問題が発生する可能性があります。起こり得る最悪の事態は、いずれかのマシンで編集内容が失われることです。実際には、これが発生する可能性は非常に小さいです。

于 2009-02-21T23:23:52.077 に答える
0

ほとんどの人は、「変更セットが非常に大きい」場合は、必ず (必要に応じてブランチで) 変更をチェックインする必要があると主張します。

于 2009-02-21T22:47:45.797 に答える
0

SVKを試すことができます。ブログ投稿と SVK サイトから、典型的な SVK 使用シナリオは

  • 既存のリモート リポジトリをミラーリングします。
  • 次に、マシンにブランチを作成し、
  • これらのブランチでローカルに作業し、
  • 完了したら、それらをミラー化されたトランクにマージし直します。
  • 最後のステップでは、リモート リポジトリが透過的に更新されます。

SVK を実際に使用した経験はありません。しかし、それはあなたのシナリオに合っていると思います。このブログ投稿では、詳細について説明しています http://www.bieberlabs.com/archives/2004/11/30/using-svk/

SVK の Windows バージョン ( SVKWin32 ) が利用可能で、TortoiseSVN はリポジトリのローカル ミラーを更新/コミットに使用できると思います。

于 2009-02-24T03:57:16.800 に答える