Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 按扩展名提交文件_Svn - Fatal编程技术网

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"