按扩展名提交文件

Commit files by extension

我有一长串 *.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?它是关于移动文件而不是提交它。

省略逗号;这是不必要的,您的 shell 只是将其视为文件名的一部分。 IE。你的命令应该很简单:

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

仅从问题中给出的详细信息来看,人们会期望它可以使用“*”通配符,如下所示,除非还有其他内容:-

/myrepo/trunk/test>svn commit *.txt *.java -m "Minor modifications"
Sending        New.java
Sending        Readme.txt
Sending        myfile.txt
Transmitting file data ...
Committed revision 15.

也可以用svn changelist方便识别:-

/myrepo/trunk/test>svn changelist "Text files" *.txt
Path 'myfile.txt' is now a member of changelist 'Text files'.
Path 'Readme.txt' is now a member of changelist 'Text files'.
/myrepo/trunk/test>svn changelist "Text files" *.java
Path 'New.java' is now a member of changelist 'Text files'.
/myrepo/trunk/test>svn status
--- Changelist 'Text files':
M       myfile.txt
        New.java
M       Readme.txt
/myrepo/trunk/test>svn commit --changelist "Text files" -m "Minor modifications"
Sending        test/Readme.txt
Sending        test/myfile.txt
Transmitting file data
.. Committed revision 16.

注意:如果您能分享更多详细信息(例如错误消息),将会很有帮助。

从我的另一个回答的评论来看,您的问题是您希望 SVN 递归地搜索每个子目录以查找与通配符模式匹配的文件。 SVN 不这样做。 SVN 依靠你的 shell 来扩展通配符。

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

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

如果你有多个目录要提交,它会变得更复杂,这取决于你 OS 你 运行 在什么上。

类 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。


编辑: 您可以使用 "changelist" 来存储要提交的文件名,而不是文件。请参阅其他答案以了解如何构建更改列表。