Svn 按扩展名提交文件
我有一长串要立即提交的Svn 按扩展名提交文件,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" 恐怕上述方法行不通。你会怎么做 编辑:澄清文件是否存在于子目录中 我已经看过它是关于移动文件而不是提交文件的。省去
*.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"
恐怕上述方法行不通。你会怎么做
编辑:澄清文件是否存在于子目录中
我已经看过它是关于移动文件而不是提交文件的。省去逗号;这是不必要的,您的shell只是将其视为文件名的一部分。也就是说,您的命令应该是:
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.
为了便于识别,您还可以使用:-
/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
并按原样提交即可(但不要使用逗号)。您可以从工作副本中的任何位置提交,但当您提交时,将只提交该目录树中的文件
如果要提交多个目录,则会变得更加复杂,具体取决于您运行的操作系统
类Unix系统有一个通配符,意思是“0个或多个目录路径”,因此在Linux或Unix上应该可以使用:
svn commit **/*.aspx **/*.aspx.cs -m "message"
Windows不理解**
通配符,因此需要在命令行中指定每个通配符。例如(路径分隔符的反斜杠,因为我在这里假设为Windows):
如果有太多子目录,只需创建一个文件,列出所有要提交的文件,并将其用于文件列表:
dir /B /S *.aspx *.aspx.cs > file_list.txt
svn commit --targets file_list.txt -m "message"
如果您不喜欢使用**
通配符(使用带有适当选项的ls
或find
而不是dir
),那么最后一个示例也应该适用于类Unix系统。它还允许您在提交前通过修改文件_list.txt编辑提交列表(如果愿意)
编辑:您可以使用“变更列表”来存储要提交的文件名,而不是文件。有关如何构建变更列表,请参阅其他答案。此问题的可能重复之处在于
svn commit
。列出的“可能的重复项”适用于svn mv
。我不认为这是重复的。我认为从对答案的评论来看,进一步的澄清适用于这个问题:文件实际上在子目录中(因此示例“我当前正在做的事情”命令实际上不起作用),并且文件已经存在于SVN中(因此不需要先添加它们)。@Ben听起来不错。根据进一步的澄清,您是否愿意提供一个答案?完成,在第二个答案中。如果它对您有效,请接受。我只是尝试了以下操作,但添加.ascx文件无效svn commit*.ascx-m“更新注释。”
Oh,所以您确实想添加新文件。您需要另一个答案中的svn add
命令,但不带逗号。“提交”用于提交对版本控制中已有文件的更改,或使添加成为永久性的。但要让它们进入版本控制,首先需要告诉svn添加它们。我希望提交它们,而不是添加它们。我在评论中犯了错误。这些ascx文件是否与您运行命令的目录相同?不,它们不在同一目录中。“svn状态”显示什么?它是否将这些文件显示为已版本化和已修改的?我喜欢这个答案,因为建议使用更改列表,您可以从几个子目录建立更改列表,并避免使用我的答案中的一次性文件。
dir /B /S *.aspx *.aspx.cs > file_list.txt
svn commit --targets file_list.txt -m "message"