0

svn update DIRrunning:とsvn updateDIR を cwd として実行することの違いは何ですか? (DIR私のチェックアウトのルートです)。

直感的には、この 2 つが同じことをすると思いますが、前者を実行すると (cwd がローカル チェックアウトの外にある場合)、すべての更新が取得されない場合があることに気付きました。しかし、後者を実行すると、必要なものが取得されます。

(Linuxで実行)

編集:すべての懐疑論者に、これが私が受けたばかりのセッションです:

$ svn up DIR/
Password for 'xxx': ...
Skipped 'DIR'
$ cd DIR/
$ svn up 
Password for 'xxx': ...
U    aaa
U    bbb
...
 U   .
Updated to revision 8965.
$ 
4

2 に答える 2

0

以下は純粋な憶測です。私は実質的に svn について何も知りませんし、その内部についても何も知りません。

そうは言っても、チェックアウトの外側から、svnは現在のディレクトリで構成情報を探し、何も見つからず、指定されたディレクトリを更新するために必要な最小限のことを行い(特定の構成情報を読み取ることによって)、内部からそれを行うと推測しますチェックアウト svn は、ローカル ディレクトリに必要な構成が含まれているため、より再帰的/プロジェクト対応モードで動作します。

2 つの実行の操作上の違いを調べると、straceいくつかの手がかりが得られる場合があります。

結局のところ違いがあり、表示されているのは、2 回目の更新 (たとえば、アクティブなプロジェクト) によって取り込まれた後の変更だけではないと仮定します。

于 2013-11-04T18:53:29.567 に答える
-1

違いはありません。 svn updateターゲットを指定しないと、単にターゲットとして使用.されます。

更新された質問に基づいています。「スキップされた 'DIR/'」メッセージを取得する方法は 2 つあります。

  1. 競合するパス (ターゲットまたはその親のいずれか) があり、2 つのコマンド間で解決する必要がありました。あなたの例を考えると、これはありそうもない

  2. svn up コマンドでパスをタイプミスし、シェルで cdspell オプションをオンにしました。

たとえば、次のようにします。

$ ls -d trunk
trunk/

$ svn up truunk/
Skipped 'truunk'

$ cd truunk/
trunk/

$ svn up
At revision 1540579.

簡単な再生方法があれば、興味があります。

于 2013-11-04T21:42:05.123 に答える