2009-07-09 2 views
4

多くのプログラマーと同じように、私は突然「光を見て」自分のコードで大手術をする「インスピレーション」に定期的に適応しがちです。通常、これはうまくいきますが、睡眠やカフェインの欠如や問題の理解の不完全さのために、私は非常に愚かなことをやっています。リポジトリにコミットせずに無限の「元に戻すスタック」を取得しますか?

これが発生した場合、次の手順は損傷を元に戻すことです。最も簡単には、私のエディタで元に戻すスタックを意味します...私はいつかファイルを閉じない限り。バージョン管理は次のものですが、私が最新のコミット(私は慣れていないコードをコミットしないでください)とインスピレーションの瞬間の間で変更を加えた場合、それらは失われます。リポジトリにはないので、コードは決して存在しませんでした。

私はこのことについて心配する必要がないように私の仕事環境を設定したいと思いますが、私は完全に満足のいく解決法を思いついたことはありません。理想的には:

  1. ファイルを保存するたびに新しい回復可能なバージョンが作成されます。
  2. これらの「自動保存された」バージョンでは、メインリポジトリが混乱することはありません。
  3. "自動保存"バージョンは、非常に迅速にブラウズできるように、ローカルに存在する必要があります。 3秒の処理時間を持つリポジトリは、何百ものリビジョンをすばやくスキャンしようとするときには実行されません。

オプション私が考えられてきました:

  • ただ、コードが破損する可能性があっても、大きな変更を行う前にメインリポジトリにコミットします。短所:「インスパイアされた」とき、私は一般的にこれのための心の存在を持っていません。ビルドを壊す
  • 自動バージョン管理が有効になっている、ローカルにホストされたSubversionリポジトリ。「Webフォルダ」としてマウントされています。短所:他のリポジトリの作業コピーではうまくいきません。 Windowsに適切なWebDAVフォルダをマウントするのは気になるところです。
  • 以前の方法と同じですが、代わりにメインリポジトリのブランチを使用し、通常は手動でコミットするたびにトランクにマージします。短所:ホストされているすべてのリポジトリで自動バージョン管理を有効にできるわけではありません。上記のポイント2と3を満たしていません。トランクからブランチまで安全に逆引きマージできません。
  • DVCSに切り替えて、私の小さなコミットをすべて「結合」します。短所:DVCSの最初のことはわかりません。 Subversionは唯一のツールです。私は上記のポイント1を満たす方法を知らない。
  • 作業コピーをバージョン管理されたファイルシステムに格納します。短所:これはWindows用ですか?もしそうなら、Googleは私に道を見せてくれなかった。

私が欲しいものを手に入れられるツールやツールの組み合わせを知っている人はいますか?あるいは、私は矛盾した要求を持って自分自身を立てたのですか? (どの私はむしろ強く疑う。)

更新:より密接なツールを検討した後、私はすでに使用(ため息)、それは私のtext editorは満たしている非常に素敵なマルチバックアップ機能を持っていることが判明し、私のほとんど完璧に必要です。 「隠し」フォルダにすべてのバックアップを保存するオプション(VCSのグローバル無視に追加できる)だけでなく、エディタでブラウズやバックアップとの比較を行うこともできます。

問題を解決しました。アドバイス、ありがとう!ありがとう!

+0

あなたが使用しているエディタについて言及していないことに気付いただけで、誰かが指摘できるように、エディタにはよりエレガントなオプションが組み込まれている可能性があります。 –

+0

EditPad Proはマルチバックアップシステムを備えていますが、ファイルシステムをバックアップしてしまいます。私はそれが私のためにどれほどうまくいくかを見るために今、試乗をしています。 –

答えて

1

ほとんどのエディタストアのバックアップファイルに保存する前に、あなたのファイルの最後のバージョン。そのプロセスをカスタマイズして、通常のチルダの代わりにリビジョン番号を追加することができます。保存するたびにファイルのコピーが作成されます。それがディスク容量を浪費する場合は、変更ごとにdiffを作成し、必要なリビジョンに達するまでパッチを順番に適用するようにエディタをカスタマイズすることができます。

+0

うーん...私の編集者は実際には、私が単に考慮しなかったこのような組み込みのマルチバックアップシステムを持っています。やあ、私。しかし、それはグローバルな設定のように見えますが、非コーディングの使用に苛立つかもしれないようです。その一方で、私はすべてのもののバックアップを取っているようなものがあるかもしれません。私は間違いなくこれにテストドライブを与える必要があります。 –

1

Windows Vista、7、またはWindows Server 2003以降を使用している場合は、シャドウコピーを使用できます。基本的に、ファイルのプロパティウィンドウには、以前のバージョンのファイルを追跡する新しいタブ「以前のバージョン」があります。

サービスが自動的にスナップショットを生成する必要がありますが、念のためにあなたはそれがふてくされて私のお尻はかなりの数回を保存している右の「インスピレーション」のあなたの瞬間の後

'vssadmin create shadow /for=c:\My Project\' 

を次のコマンドを実行することができます。

Shadow Copy

+0

これはかなりうまくいくかもしれないように聞こえます。私はまだXPを使っているのは残念です。おそらく、私はWindows 7を見てみるべきです。 –

+0

RTMs来週!それ以外の場合はRCに試してみてください。その素晴らしいOS –

0

私はエディタを切り替える時だと思います。 Emacsには、ファイルを保存するときにEmacsがファイルの複数のバックアップを自動的に作成するかどうかを決める可変のバージョン管理機能があり、それらをfoo。〜1、foo。〜2〜などと命名します。

3

分散バージョンコントロール。 (水銀、gitなど...)

物語の要点はチェックアウトがないことです、リポジトリのクローンだけです。

コミットは、メインブランチに戻すまで表示されます。

根本的な実験の変更をしたいですか?リポジトリをクローンし、コンピュータ上でたくさんのコミットを行います。それがうまくいく場合は、それを元に戻します。そうでない場合は、単にrepoをロールバックまたはゴミ箱に入れてください。

+0

Hgを例にとると(私が頻繁に使用するGoogle Codeでサポートされているように)、ローカルの "自動コミット"をローカルにすると、メインブランチにプッシュするときに、それらを単一のチェンジセットにロールインできますか?または、リポジトリを閲覧しているすべての人が、個々の文字を少しずつ見ることができますか? –

+0

はい、コミット(hg commit)は、リポジトリをブラウズした人全員がそれらをプッシュバックした後に表示されます。繰り返し保存することはできません。あなたがマイナーキャラクターを保存し、各作業デルタをコミットする場合、あなたは恥ずかしさから安全でなければなりません。何かは、これはおそらく回避することができると私に言う、私は自分でそれを行う必要はありませんでした。 – Sufian

関連する問題