3

ここに少しSVN問題があります:

ローカルにディレクトリを作成します。

$ svn mkdir output
A         output

誤って削除しました:

rm -rf output

さて、どうやって再現するか。私はこれを試しました:

$ svn mkdir output
svn: 'output' is already under version control

この:

$ svn revert output
Reverted 'output'

しかし、それはまだありません。

更新:mkdir output人々は、それを削除した後、単純なもので十分だったはずだと示唆しています. しかし、私のSVNバージョンではそうではありません。output/.svn私も削除したディレクトリがあるという事実を無視します。もちろんmkdir output、それを元に戻すことはありません。したがって、どういうわけか、SVN はそのoutput ディレクトリの再作成に関与する必要があります。(SVN 1.4.6 を使用しています。)

4

4 に答える 4

7

SVN で公式に削除します。

$  svn rm --force output
svn: 'output' does not exist

次に、もう一度作成します。

$ svn mkdir output 
A         output

上記の出力svn removeは少し誤解を招きます。削除は失敗したと思いましたが、何も変わりませんでした。

ここでは、SVN による最も直感的なアプローチではありませんが、このように機能します。

于 2009-02-23T15:32:27.997 に答える
2

それだけmkdir outputで十分だったはずです。

于 2009-02-23T15:35:18.833 に答える
1

だけでディレクトリを再作成することもできますmkdir

svn mkdirディレクトリを作成し、 と同等のことも行いますsvn addが、1 つのステップで行います。

したがって、問題が発生している理由は、「追加」が行われたためです。あなたはコミットしていないので、元に戻すことは何もせず、svn mkdirSubversion には次のコミットで追加するためのディレクトリが既にリストされているため機能しません (あなたrmが Subversion の外部にいたため)。

于 2009-02-23T15:35:46.303 に答える
1

これについて理解しておくべきことは、SVN によって維持されるディレクトリと、ローカル ファイル システムによって維持されるディレクトリの違いです。

元の投稿で発行された4つのコマンドは、次のことを行います

  1. 'output' というディレクトリを SVN リポジトリに追加することを SVN に伝えます。SVN は、その情報を 'changelist' に追加することで応答します。
  2. ローカル ファイル システムから「出力」を削除します - SVN はこれが行われていることを認識していません
  3. 'output' というディレクトリを SVN リポジトリに追加したいことを SVN に伝えます。
  4. 「出力」ディレクトリを追加することについて気が変わったことを SVN に伝えます。「変更リスト」からその情報を削除することにより、SVN は義務付けます。

単に発行した場合...

mkdir output

... ステップ 3 のように、すべて問題ありませんでした。ディレクトリはファイル システムを使用して削除されたので、ファイル システムを使用して復元する必要があります。復元に SVN を関与させる理由はありません。お気づきのように、そうしようとすると問題が混乱するだけです。

HTH

于 2009-02-23T15:50:29.887 に答える