由于多种原因,我拥有的某些文件的规范来源不能成为存储库的工作副本(Subversion服务器位于无法访问的防火墙后面,并且数据本身不存在于文件系统中我的首选结构)。因此,我编写了一个工具来下载数据,从中生成目录结构,然后使用SharpSvn将结果导入存储库。这工作......第一次。当然,第二次,该名称的目录已存在于存储库中,我无法再次导入。
相反,我可以:
我的假设是否正确,删除文件会标记与不同文件相同的新方式?有没有比第二种方法更简单的方法?
答案 0 :(得分:2)
对于1),它不会删除修订历史记录,但新文件将被视为与旧文件完全无关。你仍然可以恢复旧文件。
对于2),这将是推荐的方式。但是在'svn删除现有文件并添加新文件之后,你还必须在提交之前'svn'添加'这些新文件。
但似乎你应该考虑使用svn-load-dirs.pl脚本。您可以在Subversion书籍“Vendor branches”一章中阅读此内容。
答案 1 :(得分:0)
Subversion与文件的连接松散。对于文件夹内的文件,您可以轻松地进行获取/更新,进行大量更改(包括删除,替换或添加文件),然后提交差异。该文件级行为是典型的Subversion用法。
目录略有不同。 Subversion将存储库信息存储在文件夹级别。因此,如果您创建一个新文件夹,它将不会自动与Subversion建立连接。 (使用像TortoiseSvn这样的东西,它会照顾你的大部分内容。)
如果您要在生成过程中添加和删除目录,则与文件本身的问题略有不同。但是,您仍然可以通过命令行,SharpSvn,TortoiseSvn或其他类似工具来实现目标。
答案 2 :(得分:0)
由于您无法覆盖目录或者您将销毁.svn
目录并丢失所有存储库信息,因此您必须复制文件,但只创建新目录。这就是我想要更新的颠覆工作副本中的方法:
(cd <newdirectory> ; tar -cf - * ) | tar -xf -
当然,你需要一个Unix-y系统。它应该与Cygwin一起使用,除非Windows在系统级别覆盖文件夹时做了特别奇怪的事情。