nDiki
2006年11月28日 (火)
■ Subversion で間違えてディレクトリをごっそり消してコミットしてしまった時

今日のプロジェクト成果物とりまとめを前に昨日、メンバの1人が trunk 直下の2年半分のファイルが入っているプロジェクトディレクトリをなぜか削除してコミット。
朝きたら過去のリビジョンをエクスポートして再度追加して戻したとかで、全部履歴が切れてしまっていた。作業ディレクトリも全部入れ替わり。
こういう時は過去のリビジョンからの copy をすべし。
- 履歴が維持される
- 属性などもコピーされる
- 他のチェックアウト済み作業ディレクトリへの影響もなし
といった点で優れている。
@ 作業ディレクトリを使って消したディレクトリを戻す
svn copy --revision R URL . svn commit -m "Resurrected dir1 from revision R"
ここで R は間違えて消してコミットしたリビジョンの1つ前のリビジョン。 URL は削除したディレクトリの URL。
実行例:
# テスト用ディレクトリを作る mkdir /tmp/svntest mkdir /tmp/svntest/work # テスト用リポジトリを作る svnadmin create /tmp/svntest/repos --fs-type fsfs # テスト用作業ディレクトリでファイルを作成 cd /tmp/svntest/work mkdir trunk branches tags svn import . file:///tmp/svntest/repos --message 'Initial repository layout' rm -r branches tags trunk svn checkout file:///tmp/svntest/repos/trunk cd trunk svn mkdir dir1 echo test1 > dir1/test1.txt echo test2 > dir1/test2.txt svn add dir1/test1.txt dir1/test2.txt svn commit -m "Add dir1" echo test3 > dir1/test2.txt svn commit -m "Update dir1/test2.txt" # 消してコミットしてしまう!!! svn remove dir1 svn update svn commit -m "remove dir1" # 元に戻す svn copy --revision 3 file:///tmp/svntest/repos/trunk/dir1 . svn commit -m "Resurrected dir1 from revision 3"
@ リポジトリ上で直接戻す
svn copy --revision R URL1 URL2
ここで R は間違えて消してコミットしたリビジョンの1つ前のリビジョン。 URL1 は削除したディレクトリの URL。URL2 はその親ディレクトリの URL。
実行例:
# テスト用ディレクトリを作る mkdir /tmp/svntest mkdir /tmp/svntest/work # テスト用リポジトリを作る svnadmin create /tmp/svntest/repos --fs-type fsfs # テスト用作業ディレクトリでファイルを作成 cd /tmp/svntest/work mkdir trunk branches tags svn import . file:///tmp/svntest/repos --message 'Initial repository layout' rm -r branches tags trunk svn checkout file:///tmp/svntest/repos/trunk cd trunk svn mkdir dir1 echo test1 > dir1/test1.txt echo test2 > dir1/test2.txt svn add dir1/test1.txt dir1/test2.txt svn commit -m "Add dir1" echo test3 > dir1/test2.txt svn commit -m "Update dir1/test2.txt" # 消してコミットしてしまう!!! svn remove dir1 svn update svn commit -m "remove dir1" # 元に戻す svn copy --revision 3 file:///tmp/svntest/repos/trunk/dir1 \ file:///tmp/svntest/repos/trunk -m "Resurrected dir1 from revision 3" svn update
- 外部定義か作業ディレクトリを分けるか、trunk にブランチか (2005-01-31)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
- [ お仕事 ] 事後評価セッション (2004-08-18)
- PC2M でプライベートネットワークが見えてしまう (2008-05-26)
- [ www.naney.org ] サーバ重い (2004-01-20)
Related term
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.052754s / load averages: 0.41, 0.35, 0.27
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。
◇ 2GB 無料のオンラインストレージサービス Dropbox に次のリンク先から登録すると今なら 250MB プラス! → Dropbox