以下问题日益普遍:
注意:图像路径都在代码和数据库中,因此要获取所有已使用图像的完整列表并不容易。
我希望在部署之前为每个人编写一个小的C#程序。我想找出项目目录中的哪些文件(或其中一个subir.s递归)尚未添加到subversion中。理想情况下,我还想排除积极添加到忽略列表中的项目。
我们正在将TortoiseSVN与Windows主机和客户端一起使用。
如何以编程方式发现未添加的文件?
到目前为止我能找到的最接近的是this说要使用svn status | grep -e ^?
,但这看起来像是Unix命令。
答案 0 :(得分:14)
svn status | grep -e ^?
这是unix命令,但我很确定,如果你从Tortoise执行提交,你可以看到带有问号的新文件,即不受svn控制的文件
答案 1 :(得分:10)
此问题被标记为tortoisesvn
,因此我假设您的团队正在使用TortoiseSVN作为客户端。如@Joe Enos所示,TortoiseSVN显示与svn:ignore
中的条目不匹配的无版本文件。我想知道添加其他工具是否有帮助,因为团队应该已经使用TortoiseSVN检查未版本控制的文件。
否则,在SVN工作目录中查找未版本控制的文件时,C#程序似乎有些过分。正如@Josh Kelley建议的那样,您可以使用命令行SVN客户端(例如CollabNet或Slik SVN)和grep
。
您还可以使用Windows命令行中提供的findstr
命令:
svn status | findstr "^?"
答案 2 :(得分:7)
编译和部署代码 (抱歉,没有QA团队)
这不是真正的问题吗?如果您将未经测试的代码发送给客户,那么当然第一个发现任何问题的人将是客户。也许(除了解决这个特定问题)你需要做的是在构建过程中添加至少一些基本的自动(或手动)功能测试,有时在编译代码和将代码交给客户端之间。
答案 3 :(得分:6)
您可以使用SharpSvn来编写类似的内容:
SvnClient client = GetClient();
client.Status(workingCopyPath, (o, e) =>
{
if(e.LocalContentStatus == SvnStatus.NotVersioned)
{
Console.WriteLine("Not versioned: " + e.FullPath);
}
});
修改:这也会尊重您的忽略文件和svn:ignore
属性。
答案 4 :(得分:1)
您可以安装CollabNet Subversion Command-Line Client,然后将其svn
命令作为子进程运行,将其输入传输到您的程序中,并搜索以?
作为其第一个字符的行(指示未知/未检入Subversion且未被忽略)。您可以将CollabNet的命令行客户端与TortoiseSVN一起使用。
这与svn status | grep -e ^?
的作用相同,但它不依赖于Unix工具。
或者,你可以安装Cygwin并拥有全套的Unix工具。
答案 5 :(得分:0)
此外,您还可以更改一个设置,该设置将显示已修改新文件的文件夹。
设置 - >图标叠加层 - >显示无版本项目的叠加层
右键单击文件夹,然后导航TortoiseSVN - 设置。点击“图标叠加层”'。在右侧检查 - ' Unversioned文件将父文件夹标记为已修改'
这适用于windows7,未尝试过其他操作系统