如何使用subversion一次提交多个目录?

时间:2009-05-18 17:22:23

标签: svn commit checkin

我尝试使用svn ci dir / a dir / b -m“我的评论” 但这不起作用。我也用过svn ci dir / a / * dir / b / * -m“我的评论” 它也不起作用。

我知道您可以指定多个文件,但是如何告诉subversion检入这些文件夹中的所有已修改文件?我主要想这样做,以便我的所有更改都可以进入一个版本。我可以一次签入一个目录,但最终会为每个目录提供不同的修订版本。

9 个答案:

答案 0 :(得分:9)

您可能需要指定“但这不起作用”的含义,因为它在这里工作正常:

D:\Projects>svn commit -m 'test1' test\aaa "test\aaa bbb ccc"
Sending        test\aaa\aaa222\xxx.txt
Sending        test\aaa bbb ccc\aaa.txt
Transmitting file data ..
Committed revision 8.

D:\Projects>

答案 1 :(得分:4)

svn add dir/a
svn add dir/b
svn commit

尽管如此,你更有可能在想:

svn add dir/*
svn commit

答案 2 :(得分:1)

我认为你只有1个选项:检查包含目录 - 将这两个作为子目录的目录。

如果它们没有那样组织(即它们都是repo中的顶级目录),那么你可以做的事情并不多 - svn命令只能在一个目录上工作。

答案 3 :(得分:1)

您可以使用--changelist选项,在top目录下创建一个包含您要提交的所有文件的更改列表,然后提交更改列表。

来源和信息: svn book: changelist

答案 4 :(得分:0)

如果您从更高级别的文件夹中签出a和b的位置,这很容易。因此,如果您的工作副本是“dir”而a和b有更改,请提交“dir”以提交对两者的更改。我一直这样做。

修改:
要提交多个文件夹,您需要将它们放在同一个工作副本中。

如果您担心处理过多,可以尝试仅使用所需文件夹的稀疏结账,然后您可以根据需要提交基本目录子目录,而无需其他项目的开销。

Sparse Directories Information

答案 5 :(得分:0)

考虑使用svn:externals属性来检出存储库的一部分。您可以选择要获取的目录,然后在一个步骤中提交到多个目标。我们一直在使用这种方法取得了巨大的成功。

答案 6 :(得分:0)

考虑以下是查询

  1. 你有很多文件从存储库检出到多个目录中,其中很多都被修改了,你不记得哪些文件被修改了,你很难一次合并一个文件,然后执行以下操作< / LI>

    转到顶级目录并运行命令

    svn ci -m "comments"
    

    这将签入顶级目录下的所有修改文件以及它下面的许多子目录。

答案 7 :(得分:0)

遇到类似的问题。我有一个存储库,我需要有两个单独的工作副本的一些repoeitory的子文件夹。存储库是这样的:

/web/lib
/web/htdocs
...

...我需要分别在单独的工作副本中使用:

C:/.../web/lib
C:/.../htdocs/cbs

我通过在/web中拥有C:/.../web的“主”工作副本并在C:/.../htdocs/cbs“中创建指向”C:/.../web/htdocs的硬链接(或NTFS联结)来解决此问题。 。因此,每当我对其中一个工作副本进行本地更改时,我总是提交C:/.../web,它自然包含来自两个工作副本的更改。

我希望这种方式对你有用。

答案 8 :(得分:0)

自问这个问题以来已经很长时间了,但我对任何迟到的人都有更新。

假设您有一个像dir / a,dir / b,dir / c,dir / d ....这样的树,并且只想在子文件夹a和b中提交更改,则以下命令有效:

svn ci dir / a / * dir / b / * -m“我的评论”

如果七年前你尝试过它时真的不起作用,我只能假设在后续版本中添加了这个功能。