• 締切済み

subversion復旧時の作業コピーについて

subversion で、svnsync による同期で バックアップをとっています。 復旧時にはそのバックアップから再度空のレポジトリを作成し、 svnsyncで同期させて復旧しようと考えています。 同期を逐次行ってない場合、復旧時にはバックアップ先のレポジトリより ローカルにチェックアウトした作業コピーのリビジョンの方が新しくなります。 クライアントでTortoiseSVNを使用していますが、 ローカルで作業コピーからコミットをかけようとすると 最後のコミットから変更/追加されたファイルはありません。 今回、TortoiseSVNがすることはありません となり、コミットができません。 更新しようとすると「エラー リビジョンXはありません 」となります。 レポジトリをリストアした場合、チェックアウトし直すしかないのでしょうか。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>レポジトリをリストアした場合、チェックアウトし直すしかないのでしょうか。 そのようですね。 http://daipresents.com/2008/subversion15_svnsync_roolback/ の注意点とか。 svnsuncがどのタイミングで行われたか…が問題のような気もしますが。

tenma0305
質問者

お礼

回答ありがとうございます。 同じことやられてる方いたんですね なんとか無理やり考えて以下の方法で復旧してみました。 少ないデータで試したので多量のデータでできるかわかりませんが… 1.バックアップ先のデータも事前にチェックアウトしておく。(A) 2.サーバのリポジトリをバックアップデータから同期して復旧させる 3.(A)を再配置して復旧したリポジトリを参照するようにする 4.ローカルの最新の作業コピー(B)をクスポートして(C)を作成する 5.(A)配下に(C)配下のファイルを上書きコピーする 6.(A)をコミットする これで一応追加、更新分は反映されるかと思いますが、バックアップの リビジョン前に存在していたが、バックアップのリビジョン後に削除されたものが 反映されないので5の前に以下を追加(削除ファイルが無ければやる必要ないですが) (1) (B)と(A)でフォルダ比較をツールで行い、削除ファイルのリストを作成する (2) 削除ファイルリストの頭にsvn delete を付加してdos上で実行 これで少ないデータですがコミットできることを確認できました。 ただ、(2)で消したファイルがコミット後のログに何故か削除で出力されないようですが データは更新できたので、これでいこうかと思います。

関連するQ&A

  • subversion の通信、レスポンスについて

    初めて質問させていただきます。 会社でsubversionの1.7をCentOS5.7上にインストールし、レポジトリを作成し運用しています。 チェックアウト、コミットはできているのですが、動作についてもっと早くならないかと言われています。 クライアントでは、TortoiseSVNを利用していますが多量のデータをチェックアウトするときや、 アクセス開始時に若干タイムラグがあるように感じます。 これを改善するには、何かありますでしょうか。 クライアントからサーバへのレポジトリへは、svnでアクセスし、サーバ側でレポジトリのcon配下にpasswdとauthzファイルを置いてアクセス制限をしています。

  • subversionでリポジトリのリビジョンを変更するには?

    新しいパソコンに移動するために今まで使っていたsubversionを以下のようにして移動させました。(古いレポジトリの最新リビジョンは832だったとします。) $ svnadmin dump oldrepos --revision 500:832 > dumpfile $ svnadmin load newrepos < dumpfile 問題は、この方法で移動すると、新たにリビジョン1からリビジョン番号を付け替えたものになってしまうことです。(例:旧リビション500は、新リビジョン1になってしまう) そのため、既存のworkingコピーから、subversionへ同期がとれなくなってしまいました。 できれば、既存のworkingコピーはいじらずに修正したいので、「svnadmin load」の際に、開始リビジョンを指定できたら良いと思ったのですが、そのようなオプションを見つけれませんでした。 次善策として、svn switchでリビジョンを指定すればよいかとも思ったのですが、うまくいきませんでした。 新しくチェックアウトすることをしないで修正する方法を教えてください。

  • subversionでコミットしたらftpなどしなくても即反映したい

    最近subversionを試験的に導入してみているのですが これがあればソースコードの一括管理などが出来き 趣味ですが1人で開発するにしても世代管理などがあっていいですね! そこで最近、このように出来ないのか?と悩んでおります。 ---------------------------------------------------------------- ■subversionが導入される前 1.Windows上のローカルで開発(127.0.0.1) ↓ 2.LinuxにあるFTPサーバー(192.168.0.50)へアップロード ↓ 3.Windows上のブラウザで表示の確認(http://192.168.0.50/) といったようなことをしていたのですが、ソースコードの世代管理と一元管理をしたいので FTPサーバーが立っているLinux(192.168.0.50)にsubversionをインストールしました。 ■subversionが導入された時(導入された今の現状) 1.Windows上のローカルで開発(127.0.0.1) ↓ 1b.Linuxにあるsubversionサーバー(192.168.0.50)へTortoiseSVNを使用してコミット ↓ 2.LinuxにあるFTPサーバー(192.168.0.50)へアップロード ↓ 3.Windows上のブラウザで表示の確認(http://192.168.0.50/) ですが、以下のような手順にならないでしょうか? ■subversionが導入された時(こんな風にはできないの?) 1.Windows上のローカルで開発(127.0.0.1) ↓ 2.Linuxにあるsubversionサーバー(192.168.0.50)へTortoiseSVNを使用してコミット ↓ 3.Windows上のブラウザで表示の確認(http://192.168.0.50/) ---------------------------------------------------------------- つまり具体的な開発のシーンケースはこのような感じです。 Windows上で開発をしています。 そこでチェックアウトされたファイルを作ったり変更したり作成を行いました。 そして、ある程度、ローカルで色々開発をしローカルで動作確認をした後、 TortoiseSVNでコミットをします。 そのコミット先は、subversionのリポジトリ(192.168.0.50)です。 その後、WindowsでFFFTPを使用して、(192.168.0.50)のサーバーにアップロードをします。 アップロード後、Windowsでhttp://192.168.0.50/ でアクセスをして確認をします。 この状況でも満足なのですが、 もっと欲を言えば、コミットの作業をしたら、ファイルが自動でftpなどがされ 即時反映しないのかな?と思うのです。 もしもこのような動作が無理であれば リポジトリになどに対して現在の最新のリビジョンのファイルって 持たせることはできないんでしょうか? なにぶんsubversionは(私ではノウハウが弱い) まだ具体的になにが出来てなにが出来ないといったことが 理解できてないので、そういうの出来ますよ。それは無理ですよ。 といった事柄でも助かります。 ただlinuxに対してもノウハウが弱いので、 もしこのようなことが可能であるならば そのようなサイトなどを紹介しているサイトか、詳細を教えていただきたいと思います。(linuxはredhatを使用しています)

  • Subversionのチェックアウトの件で、どなたか教えていただけない

    Subversionのチェックアウトの件で、どなたか教えていただけないでしょうか。 (Subversion初心者です) 1.Subversionで、文書管理を行うことを検討しています。TortoiseSVNからリポジトリ上に   登録された文書をフォルダ単位でチェックアウトはできるのですが、ファイル単位で   チェックアウトを行うことができません。これは、Subversionの仕様でしょうか。 2.TortoiseSVN以外のツール(例.Eclipseなど)を使用すれば、ファイル単位でチェック   アウトを行うことが可能でしょうか。 3.もし、フォルダ単位でしかチェックアウトができない場合、困るような気がします   が、通常、どのような運用をされているのでしょうか。例えば、リポジトリー上、   できるだけ細かくフォルダを作成しているなどです。 以上、よろしくお願いいたします。

  • Subversionで作業一段落の作業コピーを削除したい

    最近 Subversion を知り試行錯誤しているのですが、以外と見つからない (探しかたっが下手くそなのか・・・)のが作業コピーの削除の仕方です。 サーバにリポジトリをそのままにしておくのは当然なのですが、クライアント のHDD容量には限界があり、複数プロジェクトの開発を行なっている私の環境 では作業コピーがクライアントのHDDを圧迫するのが目に見えています。 そこで、一段落ついたプロジェクトの作業コピーを単純に削除し、必要な時に はチェックアウトするという方法をといたいのです。 その具体的な方法が見つけられません。 ここを読めでも結構ですのでご教授頂けないでしょうか?

  • Subversionのリポジトリでが壊れてしまったようなのですが。。

    Subversionのリポジトリでが壊れてしまったようなのですが、 どなたか修復方法を教えていただけないでしょうか? 状況は以下の通りです。 * on TortoiseSVN(Version 1.4.3.8645) ・リポジトリにimportしようとすると"Error Can't create directory 'D:\user\Creation\Program\Repository\db\transcations\19-1.txn':指定されたパスが見つかりません。"と表示される。 ・Repo-BrowserでShow logをすると"Revision file lacks trailing newline"とエラーが出る。 *on Subversion(Version 1.4.3 (r23084)) ・svn admion recoverすると正常に復旧が終了したように見える。 ・svn dumpをするとリビジョン1のダンプ中に"svnadmin: リビジョンファイルの末尾に改行がありません"とエラーが出て止まってしまう。 リポジトリの管理はTortoiseSVNで行っておりました。脈絡もなくこうなってしまったので原因が分かりません;OSはWindows XP2です。 どなたかアドバイスしていただけると幸いです。

  • Subversion のチェックアウト日時の取得

    Subversion リポジトリに登録されているファイルのチェックアウト日時を取得する方法は有るでしょうか。 やりたいのは [おおよその作業時間] ≒ [コミット時刻] - [チェックアウト時刻] を割り出しすという事です。 チェックアウト時刻の取得方法のご教示をお願い致します。

  • Subversionでのチェックアウトについて

    仕事でSubversionを使ってリソースの管理を行うことになりました。 そこで、Subversionの勉強をしています。 しかし、調べてもわからないことが発生し困っています。どなたかご存じの方はご教授お願い致します。 質問内容は下記になります。 Aさんがチェックアウトした場合、他の人が同じリソースをチェックアウトできなくする方法はありますでしょうか? 通常、ロックを行えばチェックアウトはできても他人はコミットする事ができないと思います。 しかし、今回チェックアウトを行う人は運用者でありPC1台です。運用者がチェックアウトを行って、開発者へリソースを渡すイメージです。 何か方法はありますでしょうか?

  • TortoiseSVNで、ローカルPCのデータをUPし同期する方法は?

    TortoiseSVN初心者です。 Subversionを導入し、クライアントはTortoiseSVNを使用しています。 まだ導入したてで、リポジトリは空の状態です。 すでにローカルPCにある、現在進行中のプロジェクトのデータを リポジトリにUPし、 TortoiseSVNでコミットしながら作業を進めていきたいと思っています。 そこで質問ですが、どういった手順でローカルPCのデータを リポジトリのデータと同期させたら良いのでしょうか? 以下の方法でためしてみましたが、うまくいかず、 フォルダに「!」マークがついてしまいます。 1)リポジトリに「仮プロジェクト」フォルダを作成 2)チェックアウト 3)ローカルにできた「仮プロジェクト」フォルダに、プロジェクト関連のデータを格納 4)TortoiseSVNで格納したデータを「追加」 5)コミット 初心者ゆえ、説明不足な点があるかと思いますが、よろしくお願いします。

  • subversionのリポジトリの作成を簡単にしたい

    現在subversionを使おうと考えているのですが、 クライアントマシン(192.168.0.2)にはTortoiseSVNをインストールして subversionはサーバーマシンLinux(192.168.0.50)にインストールをしており 通常の操作などはインポート、コミット、チェックアウトなどはTortoiseSVNを使っており 非常に満足しているのですが Projectやものによっては、リポジトリ先を別けていたほうが良いので そのたびに リポジトリの作成は、Linuxのマシンの方で svnadmin create --fs-type fsfs [PATH] などしたり Apacheの設定で httpd/conf/httpd.conf アクセス権限なども、都度都度作成しなければならず非常に面倒です。 これら何とかブラウザ上で、Project名を入力したら 自動的にリポジトリの作成とリポジトリにアクセスできる為の設定の変更が 勝手にできるようにならないでしょうか? やはりlinuxのコマンドをチマチマと入力しなければならないんでしょうかねぇ? もしそんなツール類があれば御紹介していただけないでしょうか? お願い致します