忽略文件在Subversion中移除了svn:ignore属性的旧值。

3
我有一个Subversion工作副本,位于 G:\csmdepot\Builds,其中包含不同的文件,其中一些被忽略了,另一些没有被忽略(我使用Tortoise忽略了这些文件):
  • \Build_1.wim 被忽略了
  • \Build_2.wim 被忽略了
  • \WimID.xml (未被忽略)
现在为了自动化这一切,我想通过命令行来执行操作,并尝试了以下步骤(我正在编写一个批处理文件在vbscript中并运行它)。
fso.MoveFile "G:\csmdepot\Builds\WimID.xml", "G:\WimID.xml"

---批处理文件开始

G:
cd G:\csmdepot\Builds\
svn commit WimID.xml -m "Commit that WimID.xml is away"
svn propset svn:ignore WimID.xml .

批处理文件结束 ---

fso.MoveFile "G:\WimID.xml", "G:\csmdepot\Builds\WimID.xml"

但是当我回到G:\ csmdepot \ Builds文件夹时,所有被忽略的文件都标记为未版本化,而svn:ignore属性中唯一的值是WimID.xml,但是这个文件也已经被版本化了。当我手动提交时,至少WimID.xml被忽略了。
我该怎么做才能将WimID.xml附加到svn:ignore属性的值中,而不删除旧值,并且我的svn提交语句有什么问题?
编辑:fso.MoveFile语句正在工作。这与我的svn命令有关。
2个回答

3

阅读完第一个答案中的内容和链接后,我偶然发现了svn propget,这启发我写下了以下内容:

svn propget svn:ignore .>>.svnignore
echo WimID.xml>>.svnignore
svn propset svn:ignore -F .svnignore .

我在Windows 7上使用1.6.23版的svn客户端进行了测试。

对于所有情况,无论属性之前是否已设置,这都对我有效。

最好的事情是您可以在文件中看到svnignores。

关于提交不确定,也许您需要告诉svn将文件从svn中删除?


3
正如您所注意到的,使用svn propset svn:ignore会覆盖先前设置的svn:ignore属性。
不幸的是,这方面没有简单直接的追加命令。如此处所述,如果您想要一个可用的追加命令,您需要编写一些批处理/脚本来解决它。
但是,如果您只是偶尔需要这样做,您也可以使用其他解决方案:
  1. 通过在文件中使用所有所需模式指定整个忽略集(我称之为ignoredFiles),然后使用svn propset svn:ignore -F ignoredFiles .
  2. 您可以通过在文件名之间按回车并在整个参数周围加上引号来多行添加文件,但这可能仅适用于某些操作系统/ shell。例如:svn propset svn:ignore ‘Build_1.wim [enter] Build_2.wim [enter] WimID.xml’ . [enter](摘自博客评论
  3. 改用propedit: svn propedit svn:ignore . 但是,这需要使用命令行svn进行一些设置。有关更多详细信息,请参见svn help propedit

谢谢您的回答。根据我的需求,我需要一个像您所说的脚本:“不幸的是,关于这个问题没有简单直接的追加命令。如此描述,如果您想要一个有效的追加,您需要编写一些批处理/ shell 脚本来解决它。” 您知道编写一个相同功能的 批处理vbscript 的方法吗? - rugkei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接