“svn update DIR”和“cd DIR& svn update”之间的区别

时间:2013-11-04 18:49:48

标签: linux svn

使用DIR作为cwd运行svn update DIR和运行svn update之间有什么区别? (DIR是我结帐的根目录。)

直观地说,我希望这两个人做同样的事情,但我注意到在运行前者时(当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.
$ 

2 个答案:

答案 0 :(得分:0)

以下是纯粹的疯狂猜测。我对svn几乎一无所知,也不知道它的内部结构。

话虽如此,我猜想从结账外部svn在当前目录中查找配置信息,找不到任何内容,然后执行更新给定目录所需的最小值(通过读取其特定的配置信息)和从checkout svn里面运行的是一个更加递归/项目感知的模式,因为本地目录包含它需要的配置。

使用strace之类的内容检查两次运行之间的操作差异可能会提供一些线索。

假设毕竟存在差异,您所看到的不仅仅是后来的更改被第二次更新拉入(例如,使用活动项目)。

答案 1 :(得分:-1)

没有区别。未指定目标的svn update仅使用.作为目标。

根据您更新的问题。您可以通过两种方式获得“Skipped'DIR /'”消息:

  1. 你有一个冲突的路径(目标或其中一个父亲),你必须在两个命令之间解决它。根据你的例子,这似乎不太可能

  2. 您已在svn up命令中输入了路径并在shell中打开了cdspell选项。

  3. 以此为例:

    $ ls -d trunk
    trunk/
    
    $ svn up truunk/
    Skipped 'truunk'
    
    $ cd truunk/
    trunk/
    
    $ svn up
    At revision 1540579.
    

    如果您有简单的复制方法,我会对它感兴趣。