人に聞けない痔の悩み、これでスッキリ >>

TortoiseSVN のバージョン1.9.7を使用しています。

SVNに登録していて、削除してしまったファイルを復旧したく、
ネット、ヘルプなどを調べたのですが、実際の操作方法が不明です。
ヘルプなどでは、リポジトリブラウザから削除してしまったファイルの
削除時のログ(リビジョン)を表示し、その当該ログをマウスで位置づけ、
右クリックでコンテキストメニューを表示させ、
「このリビジョンにおける変更を取り消す」を選択して復旧するとのkとでしたが、
その「このリビジョンにおける変更を取り消す」部分が、コンテキストメニューに
表示されませんので、実行できず、復旧方法が不明です。

上記が表示されない理由、そもそもの復旧方法も含めて、ご享受願います。

質問者からの補足コメント

  • 削除した方法は、SVNのリポジトリブラウザから、
    対象ファイルを表示し、対象ファイルにマウスで位置づけ、
    右クリックからコンテキストメニューを表示させ、
    メニューの「削除」を選択し、削除しました。
    宜しくお願いします。

      補足日時:2017/10/13 00:14
  • 回答ありがとうございます。
    一つ確認ですが、作業フォルダ(チェックアウトフォルダ)自体を消してしまった場合、
    どうしようもないのでしょうか?

      補足日時:2017/10/13 23:25
  • ご回答ありがとうございます。
    「もう一度チェックアウトして」とありますが、確認ですが、
    SVN上にない既に削除したファイルに対して、対象がなく、
    チェックアウトはできないと思いますが、
    何に対してチェックアウトするのでしょうか?

      補足日時:2017/10/14 12:03
  • 回答ありがとうございました。
    おかげで、概ね知りたい内容が理解できてきましたので、
    最後の確認としたいのですが、削除したファイルを取り消しても
    結局、SVNへ元のファイルが復旧できても
    元のリビジョンのままではなく、リビジョンが変わる(進む)ようですが、
    それは仕様でしょうがないでしょうか?

      補足日時:2017/10/16 23:22

A 回答 (5件)

>結局、SVNへ元のファイルが復旧できても


>元のリビジョンのままではなく、リビジョンが変わる(進む)ようですが、
>それは仕様でしょうがないでしょうか?

挙動みる限りではSVNの仕様…でしょうね。
『リポジトリに対する変更』ということでリビジョンの更新となるのでしょう。

以前、職場で使用している環境で
リポジトリブラウザからフォルダを1つずつ作成して無駄にリビジョン進めている方も居ましたが。
# チェックアウトして作業コピーでフォルダ作って、SVN追加してからコミットするとリビジョンは1つ進むだけで済む。
    • good
    • 0
この回答へのお礼

遅くなりましたが、色々と回答して頂き
ありがとうございました。

お礼日時:2017/10/19 23:25

>「もう一度チェックアウトして」とありますが、確認ですが、


>SVN上にない既に削除したファイルに対して、対象がなく、
>チェックアウトはできないと思いますが、

チェックアウトの対象はフォルダ(ディレクトリ)ですから、より上位のディレクトリをチェックアウトすればよいかと。
元のディレクトリごと削除した。とかいうのであれば、削除する前のリビジョンでチェックアウトし、SVN更新…でしょうかね。
ディレクトリは更新で消えるかも知れませんが作業コピーの管理用の.svnフォルダは残るかと。
# というか質問ではファイルですよね?
    • good
    • 0

>一つ確認ですが、作業フォルダ(チェックアウトフォルダ)自体を消してしまった場合、


>どうしようもないのでしょうか?

もう一度チェックアウトして、取り消しを行ったあとコミットしてください。

リポジトリに対して直接取り消しを行うコマンドは…あるんですかね??
リポジトリからの削除はsvn delete URLで直接削除&コミットとする手順があるようですが
今回の取り消し操作(逆マージらしい)は作業コピーに対する操作のようですから。
    • good
    • 0

とりあえず、作業用にリポジトリ作って試してみた。



>その「このリビジョンにおける変更を取り消す」部分が、コンテキストメニューに
>表示されませんので、実行できず、復旧方法が不明です。
>上記が表示されない理由、そもそもの復旧方法も含めて、ご享受願います。

そのリポジトリから『チェックアウトしたフォルダ(作業コピー)で』右クリックから「ログを表示」して作業してください。
『チェックアウトしていないフォルダ(デスクトップなど)で』右クリックしてリポジトリブラウザーを起動、URLを入力して開いたリポジトリブラウザーから「ログを表示」した場合は、「リビジョンにおける変更を~」は表示されません。
そもそも、取り消した内容をどこに反映するのか?ということになりますから。
# 作業コピーで削除したものを「変更を取り消す」とすると「SVN追加」の状態になったファイルが出来ます。
# コミットすることでリポジトリに取り消しが確定することになるかと。
# 追加したファイルの取り消しだと…削除された上でそのフォルダにコミット待ち状態になるんでしょうね。たぶん。


どうしようもなかったら、削除前のリビジョンを一時的にエクスポートして対象ファイルを作業コピー(チェックアウトしたフォルダ)にコピーしてSVN追加、コミットで戻す。
なんて方法もあるには有りますが。
# たぶん、無駄にリポジトリの容量を消費するかも知れませんけど。
    • good
    • 0

削除した。


というのが、なにをどうやったのか書いてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qsvnでファイル移動すると履歴がついてこない

tortoisesvn1.8.3 build24901-64bitを使用しています。

1)作業コピーで移動したい(例えば)3つ履歴があるファイルを選んで右ドラッグ
2)同じ作業コピー内の別のディレクトリにドロップ
3)「SVN バージョン管理下の項目をここに移動」を選ぶ
4)移動した先のファイルアイコンはプラスマークが付く
5)コミット。コミットログに「ファイル移動」と記載。
6)コミット時の表示は移動したファイル削除/追加と出ている。
7)コミット後、移動したファイルを選んでログを見ると「ファイル移動」しかありません。

リポジトリのtopのログには全履歴が残っていますが
これは正常な動作をしているのでしょうか?

期待した動きとしては
移動したファイルのログを見たら、元々持っていた3つの履歴に「ファイル移動」が
追加された状態です。

Aベストアンサー

Subversionでは、移動は「コピーしてから、元を削除」となります
http://www.caldron.jp/~nabetaro/svn/svnbook-1.5-final/html-chunk/svn.ref.svn.c.move.html

よって、4),6)は正しいです。

7) については、「コピー/名前の変更が発生したら停止」にチェックが入っていませんか?
http://tortoisesvn.net/docs/nightly/TortoiseSVN_ja/tsvn-dug-showlog.html

QSubversionのリポジトリの削除

Subversionを使ってみようと現在ダウンロードしていろいろ試しています。
そこで疑問なんですが、たとえばテスト用で作ったSubvewsionのリポジトリを完全に削除したい場合はどうすればいいのでしょうか?

単純にそのリポジトリ以下のファイルやディレクトリを削除するだけでいいのでしょうか?

現在、Windowsで上でリポジトリ(ローカル)を作成し、TortioseSVN経由で利用しています。
UNIX系の場合でかまわないので、情報があれば教えてほしいです。

Aベストアンサー

リポジトリごとごっそり削除したい場合は、Subversionのディレクトリ以下を全て消してしまえば良いと思います。

試しに ディレクトリをRenameしてみてはどうでしょうか?
当然ですが、アクセスできなくなると思います。。
# 何かSubversion用のデーモンを動かしている場合はちょっと注意が要るかもしれません。

私は大抵そういう場合は消してしまいますが、はたして他のディレクトリに書き込みを全くしていないかというと、確認したことはないです。
ただ、マニュアルにも
http://subversion.bluegate.org/doc/book.html#svn.reposadmin.maint.backup
「コピーすればバックアップが取れる」とあるので、その部分にしか書き込みはしていないと思われます。

QViewにインデックスは張れますか?

件名の通りなのですが、作成したViewが遅くて困っています。
改善方法としてはViewを作成しないで従来のSQLにインデックスを張って取得する方法にしようかなと考えています。
なにかいい方法はありますか?

Aベストアンサー

Viewの元テーブルに適切なIndexを貼る、ではいけないのですか?

QDOSコマンドで cmd /c rd /s /q c: の意味は?

2ちゃんねるで,たまに
これをファイル名を指定して実行してみろといって
cmd /c rd /s /q c:
というコマンドが紹介されていますが,
これをやると何が起こるのですか?

Aベストアンサー

絶対に実行してはダメですね。
Cドライブのデータを全て削除するコマンドです。

CMD /C ○○ ・・・ ○○のコマンドを実行する

RD /S /Q △△ ・・・ ディレクトリを削除する
          /Sでその場所配下の全てのファイルを削除
          /Qで削除のメッセージを表示しない

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

Q日付型カラムへのデータINSERT

お世話になります。ひとつご教授ください。

オラクル10g, ojdbc14でjdk1.4.2から接続です。

INSERT命令を使ってテーブルにレコードを追加する際に、DATE型のカラムに対して

INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27 12:00:00', ...);

を実行するとエラーORA-01861が出ます。そこで

INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27', ...);

このように記述して再度実行すると通ります。

このようなとき、時間の部分まで設定した値をカラムに格納したいときはどうしたらよろしいでしょうか?

よろしくお願いします。

Aベストアンサー

ごめんなさい。
説明と文例が違ってしまいました。
正しくはこちらです。

INSERT TABLE_A (DATE1, ...) VALUES (to_date('2006-4-27 12:00:00','yyyy/mm/dd hh24:mi:ss'), ...);
というように、to_date関数を使うのが一般的かと思います。

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Qシェルの「:コマンドが見つかりません」エラー

TeraTermでシェル言語を実行したとき、
「:コマンドが見つかりません」というエラーが出ました。
何行目かとか、どのコマンドがとか、具体的にわかることはできないのでしょうか?

Aベストアンサー

sh -x スクリプトファイル名
で、スクリプト中の各コマンドが実行直前に表示されますので、それで大体わかると思います。
ただ、「:コマンドが見つかりません」という表示のすぐ左にそのコマンドが出ているはずです。もしかして、全角空白が入ってそれがエラーになってるとか?

Q括弧があるとHYPERLINKで飛べない?

ExcelのHYPERLINK関数で、ジャンプできないケースがあります。

× =HYPERLINK("#テスト(A)!A1","●")
作業というシートと、テスト(A)というシートを作り、作業シートから上記のジャンプ命令で、テスト(A)シートに飛ぼうとすると「参照が正しくありません」というエラーが出ます。

○ =HYPERLINK("#テストA!A1","●")
(A)の括弧を消し、テストAというシートにするとジャンプできます。
半角()でもダメで、<>≪≫でもダメでした。
シートに括弧があると対応していないのでしょうか?

括弧があってもジャンプできるような回避策があったら教えて下さい。
Excelのバージョンは2002です。

Aベストアンサー

シート名に特殊文字があるときは
シート名を'(シングルコーテーション)
で囲んでみてはどうでしょうか?
=HYPERLINK("#'テスト(A)'!A1","●")
のように。

Q「関数が定義されていない」とのエラーが出る

こんにちは,よろしくお願いします。
何が何だか分からなくて困っています。
IEでは問題なく動くのに,Firefoxだと関数が定義されていないとのエラーが出ます。「<関数名> is not defined 」

スクリプトは,外部ファイル化してあります。キータイプの間違いもありません。何度も確認しました。

function aaa(){
 (スクリプト)
}

<body onload="aaa()">
のようにして呼び出しています。
いったい,何が悪いのでしょうか?

また,Operaだと,「リンク先のスクリプトを読み込むことができません」とのエラーが出ます。
元になるPHPファイルでは,
<script type="text/javascript" language="javascript" src="../javascript/AAAAA.js"></script>
のようにして呼び出しています。
もちろん,ファイルネームのタイプミスはありません。

ちなみに,スクリプトの内容は,日付関連のコードを記述しています。
試行錯誤している時に,他の日付関連のコードを実行したときに,
dayoption is not defined
というエラーが出たことがあります。
関数が存在しているのに,定義されていないと出るのは,もしかすると,日付関連の関数等の使い間違いではないかとも考えています。
使っているものは,Date()とgetYear()です。これらのうちのどちらかがFirefoxやOperaだとサポートされていないのでしょうか?

どうか御指導ください。よろしくお願いします。

こんにちは,よろしくお願いします。
何が何だか分からなくて困っています。
IEでは問題なく動くのに,Firefoxだと関数が定義されていないとのエラーが出ます。「<関数名> is not defined 」

スクリプトは,外部ファイル化してあります。キータイプの間違いもありません。何度も確認しました。

function aaa(){
 (スクリプト)
}

<body onload="aaa()">
のようにして呼び出しています。
いったい,何が悪いのでしょうか?

また,Operaだと,「リンク先のスクリプトを読み込むことが...続きを読む

Aベストアンサー

たぶんなんらかの凡ミスでしょうけど・・・・
firefoxでだめなら、firefoxのアドオンのfirebugで検証するのが一番です


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング