我有一长串 *.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"
如果您不喜欢使用 **
通配符(使用 ls
或 find
并使用适当的选项而不是 dir
)。如果您愿意,它还可以让您在提交之前编辑提交列表,方法是在提交之前修改 file_list.txt。
编辑:您可以使用“更改列表”来存储要提交的文件名,而不是使用文件。有关如何构建更改列表的信息,请参阅其他答案。
关于svn - 按扩展名提交文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757285/