svn - 按扩展名提交文件

标签 svn

我有一长串 *.aspx*.aspx.cs 文件,我想立即提交这些文件,而不提交具有其他文件扩展名的其他文件。我目前正在做的是这样的:

svn commit path\to\one.aspx, path\to\two.aspx, path\to\N.aspx.cs -m "Message"

我想做的是这样的:

svn commit *.aspx, *.aspx.cs -m "Message"

恐怕上面的方法不起作用。什么会?

编辑:澄清文件存在于子目录中。

我看过Can you specify filenames using wildcards or regexes in the subversion mv command?这是关于移动文件而不是提交它。

最佳答案

从我的其他答案的评论中,您的问题是您期望 SVN 递归地搜索每个子目录以查找与通配符模式匹配的文件。 SVN 不这样做。 SVN 依赖您的 shell 来扩展通配符。

解决方案取决于您的情况。

如果您要提交的所有文件都位于同一个公共(public)目录中,只需 cd path/to/common/dir 并按您正在执行的操作进行提交(但省略逗号)。您可以从工作副本中的任何位置提交,但是当您这样做时,只会提交该目录树中的文件。

如果您有多个目录要提交,它会变得更加复杂,具体取决于您运行的操作系统。

类 Unix 系统有一个 ** 通配符,表示“0 个或多个目录路径”,因此这应该适用于 Linux 或 Unix:

svn commit **/*.aspx **/*.aspx.cs -m "message"

Windows 无法识别 ** 通配符,因此您需要在命令行上指定每个通配符。例如(路径分隔符的反斜杠,因为我在这里假设 Windows):

svn commit subdir1\*.aspx subdir1\*.aspx.cs subdir2\*.aspx subdir2\*.aspx.cs -m "message"

如果您有太多子目录,只需创建一个文件,列出您要提交的所有文件,并将其用于您的文件列表:

dir /B /S *.aspx *.aspx.cs > file_list.txt
svn commit --targets file_list.txt -m "message"

如果您不喜欢使用 ** 通配符(使用 lsfind 并使用适当的选项而不是 dir)。如果您愿意,它还可以让您在提交之前编辑提交列表,方法是在提交之前修改 file_list.txt。


编辑:您可以使用“更改列表”来存储要提交的文件名,而不是使用文件。有关如何构建更改列表的信息,请参阅其他答案。

关于svn - 按扩展名提交文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757285/

相关文章:

svn - 是否可以将现有的 svn 存储库导入 Google 代码?

svn - Starteam 到 SVN 的迁移,Polarion 的替代品?

svn - SVN 新手,我应该保留项目的本地副本吗?

svn - 除了从分支合并外,如何锁定 SVN 主干?

iphone - Xcode4 导航器中的奇怪符号

svn - 如何复制在 SVN 中维护的源代码并将代码移动到不同的 SVN 存储库

svn - gitk 或 hgk 的颠覆模拟

svn - 进行svn remove和svn重命名后,获取适用的补丁

svn - 如何创建具有标准布局的 subversion 存储库?

svn - 如何查看本地副本的存储库路径?