按扩展名提交文件
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"
如果您不喜欢使用 **
通配符(使用 ls
或 find
以及适当的选项而不是 dir
).如果您愿意,它还可以让您在提交之前编辑提交列表,方法是在提交之前修改 file_list.txt。
编辑: 您可以使用 "changelist" 来存储要提交的文件名,而不是文件。请参阅其他答案以了解如何构建更改列表。
我有一长串 *.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"
如果您不喜欢使用 **
通配符(使用 ls
或 find
以及适当的选项而不是 dir
).如果您愿意,它还可以让您在提交之前编辑提交列表,方法是在提交之前修改 file_list.txt。
编辑: 您可以使用 "changelist" 来存储要提交的文件名,而不是文件。请参阅其他答案以了解如何构建更改列表。