【问题标题】:Append directories to ignored list in svn (Windows)将目录附加到 svn 中的忽略列表(Windows)
【发布时间】:2013-11-20 07:54:15
【问题描述】:

曾经几乎有[相同的问题]:Append directories to ignored list in SVN 我在问,但我需要它用于 Windows。

为了我的需要,我需要一个像@nosid 在那个线程中写的脚本:

#! /bin/bash
ignore="foo"
for pathname in "$@"; do
    lines="$( svn propget svn:ignore "$pathname" )"
    grep -F -x -q "$ignore" - <<< "$lines" ||
    svn propset svn:ignore "$lines"$'\n'"$ignore" "$pathname"
done

你知道如何用 vbscript(或批处理)来实现吗?

目前我正在这样做,这只是取消了 WimID.xml 的版本,但所有其他被忽略的文件都不再被忽略 (Ignore file in Subversion removes old values from svn:ignore property)。

fso.MoveFile "G:\x\BuildImage\WimID.xml", "G:\WimID.xml"

wshshell.run UnversionBat

fso.MoveFile "G:\WimID.xml", "G:\x\BuildImage\WimID.xml"

UnversionBat 是:

svn commit WimID.xml -m "test"

svn propset svn:ignore WimID.xml .

【问题讨论】:

    标签: bash svn vbscript scripting ignore


    【解决方案1】:

    在 VBScript 中,您可以像这样遍历参数列表:

    For Each pathname In WScript.Arguments
      ...
    Next
    

    外部命令的输出可以这样读取:

    Set sh = CreateObject("WScript.Shell")
    
    Set svn = sh.Exec("svn propget svn:ignore """ & pathname & """")
    Do While svn.Status = 0
      WScript.Sleep 100
    Loop
    If svn.ExitCode = 0 Then lines = Split(svn.StdOut.ReadAll, vbNewLine)
    

    要运行外部命令而不读取其输出,您可以使用ExecRun 方法。

    【讨论】:

    • 谢谢。我尝试如下:For Each sPath In WScript.Arguments Set svn = wshshell.Exec("svn propget svn:ignore """ &amp; sPath &amp; """") Do While svn.Status = 0 WScript.Sleep 100 Loop If svn.ExitCode = 0 Then lines = Split(svn.StdOut.ReadAll, vbNewLine) Next MsgBox lines sPath 是一个目录,其中有六个被忽略的文件,所以 MsgBox 不应该给我这六个文件的名称吗?我究竟做错了什么?我真的不明白 Wscript.Arguments 的用途。我只想忽略特定路径中的另一个文件,所以当我可以读出旧文件时,我可以再次添加它们。
    • 我可以让它遍历特定​​文件夹中的所有文件,但它仍然什么也没显示:Set objFolder = fso.GetFolder(sPath) For Each File In objFolder.Files MsgBox File Set svn = wshshell.Exec("svn propget svn:ignore """ &amp; File &amp; """") Do While svn.Status = 0 WScript.Sleep 100 Loop If svn.ExitCode = 0 Then lines = Split(svn.StdOut.ReadAll, vbNewLine) Next 可能是什么问题?
    • 直接在CMD中运行命令是否有效?属性名称区分大小写,那么名称拼写是否正确?您是否在 STDERR (WScript.Echo svn.StdErr.ReadAll) 上获得输出?
    • 当我直接在CMD 中运行svn propget svn:ignore G:\depot\stage2\BuildImage\WimID.xml(WimID.xml 被忽略)时,我知道它不受版本控制。当我在受版本控制的文件上运行它时,我根本没有得到输出。名称拼写正确。 STDERR 上的输出只是 WimID.xml 目录中的最后一个文件:svn: E200005: G:\depot\stage2\BuildImage\WimID.xml isn't under version control 然后行的输出为空。
    • 嗯,版本控制不控制不受版本控制的文件,所以svn 没有什么可以处理的。如果命令没有在 STDOUT 上产生输出,则意味着发生了错误(在这种情况下,应该在 STDERR 上输出)或者文件没有​​指定的属性。
    猜你喜欢
    • 2012-05-25
    • 2020-05-05
    • 1970-01-01
    • 2010-09-12
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2019-04-04
    相关资源
    最近更新 更多