svn导出到结帐

时间:2013-11-05 12:09:27

标签: linux bash svn

已签出应用程序。然后想要导出我的工作副本,应该制作完整的副本,然后删除.svn目录,但是mkdir失败并丢失了主工作目录中的所有.svn。

问题:如果我进行了新的结账,是某个版本的find只能复制在特定日期之后编辑的文件(从导出到新的结帐目录树),更重要的是 - 这会有效吗?任何坑都需要注意?

已编辑的文件都是.xml或.java扩展名。

我正在考虑复制所有文件,但之后有其他人更改了文件。虽然我相当确定我更改的文件只会由我更改。

可以手动完成,但想知道是否有一个很好的脚本可以完成大部分工作。

2 个答案:

答案 0 :(得分:1)

我建议使用diff和path util。我认为它最可靠。你可以看看一个新的副本,然后在两者之间运行差异。这将创建一个补丁,您可以将其应用于新签出的版本。

diff -r --exclude=".svn" dir/one dir/two > patch.diff

然后在签出版本中将patch.diff复制到新签出的根目录并执行

patch -p1 --dry-run < patch.diff

如果这很开心,那么删除--dry-run,它将应用差异。这可能有点矫枉过正,但是当事情变得非常混乱时,这是一个很好的工具。

答案 1 :(得分:1)

您可以简单地restore the .svn directories you deleted

,而不是将您更改的文件复制到新位置
svn checkout --depth files --force URL PATH

其中URL是您的存储库的网址,PATH是您的工作副本的路径。