代码之家  ›  专栏  ›  技术社区  ›  Dinah SLaks

查找未添加到Subversion的文件

  •  18
  • Dinah SLaks  · 技术社区  · 15 年前

    以下问题越来越普遍:

    • 有几个开发人员正在开发一个包含新文件(通常是图像)的项目。
    • 每个人都说所有的东西都已登记,我们冻结了开发。在我们不知道的情况下,有一些图像没有登记。用户没有注意到丢失的文件,因为它们是新的,而不是签出的,所以SVN看起来很好。
    • 代码是编译和部署的(抱歉,没有QA团队)
    • 第二天,客户告诉我们丢失的图像
    • 首席技术官向我们宣读了《暴乱法》

    注意:图像路径在代码和数据库中都有,因此不容易获得所有已使用图像的完整列表。

    我希望在部署之前为每个人编写一个小的C程序。我想知道项目目录(或者它的子目录之一,递归地)中哪些文件没有添加到Subversion中。理想情况下,我还希望排除主动添加到忽略列表中的项目。

    我们将Tortoissesvn用于Windows主机和客户端。

    如何以编程方式发现未添加的文件?

    到目前为止我能找到的最接近的东西是 this 说用 svn status | grep -e ^? 但这看起来像一个Unix命令。

    6 回复  |  直到 8 年前
        1
  •  6
  •   Sander Rijken    15 年前

    你可以使用 SharpSvn 为此,请写下如下内容:

    SvnClient client = GetClient();
    
    client.Status(workingCopyPath, (o, e) =>
    {
        if(e.LocalContentStatus == SvnStatus.NotVersioned)
        {
            Console.WriteLine("Not versioned: " + e.FullPath);
        }
    });
    

    编辑: 这也会尊重您的忽略文件和 svn:ignore 性质。

        2
  •  14
  •   Ency    15 年前
    svn status | grep -e ^?
    

    这是unix命令,但我敢肯定,比起从tortoise执行commit,您可以看到带有问号的新文件,这些文件不受svn控制。

        3
  •  9
  •   Community Mohan Dere    9 年前

    此问题标记为 tortoisesvn 所以我假设你的团队使用Tortoissesvn作为客户。AS @Joe Enos 建议,Tortoissesvn显示与中的条目不匹配的未版本化文件。 svn:ignore . 我想知道添加另一个工具是否有帮助,因为团队应该已经在用Tortoissesvn检查未版本化的文件了。

    否则,对于在SVN工作目录中查找未版本化的文件而言,C程序似乎是多余的。AS @Josh Kelley 建议您只需使用命令行SVN客户端(collabnet或 Slik SVN 例如)和 grep .

    您也可以使用 findstr 在Windows命令行中可用的命令:

    svn status | findstr "^?"
    
        4
  •  7
  •   Jeremy Friesner    15 年前

    编译和部署代码 (抱歉,没有质量保证团队)

    这不是真正的问题吗?如果您将未测试的代码发送给客户机,那么发现任何问题的第一个人当然是客户机。也许(除了解决这个特定的问题之外)您需要做的是在构建过程中添加至少一些基本的自动(或手动)功能测试,在编译代码和将代码移交给客户机之间。

        5
  •  1
  •   Josh Kelley    15 年前

    您可以安装 CollabNet Subversion Command-Line Client 然后运行它的 svn 命令作为子进程,通过管道将其输入导入程序,并搜索 ? 作为其第一个字符(表示未知/未签入Subversion且未被忽略)。您可以将collabnet的命令行客户机与tortoissesvn一起使用。

    这和 svn status | grep -e ^? 是的,但它不依赖于Unix工具。

    或者,您可以直接安装 Cygwin 并且有全套的Unix工具供您使用。

        6
  •  0
  •   Shirish Herwade    10 年前

    您还可以更改一个设置,该设置将显示已修改新添加文件的文件夹。

    设置->图标套印格式->显示未版本化项目的套印格式

    右键单击文件夹,然后导航至Tortoissesvn-设置。单击“图标覆盖”。在右侧选中-“未版本化的文件将父文件夹标记为已修改”

    这在Windows7上有效,而不是与其他操作系统一起使用

    推荐文章