SVN只导出标签中已更改的文件

时间:2009-01-06 20:20:33

标签: svn

有没有人知道如何使用svn从两个标签中仅导出更改的文件?

假设我有标记1.0,然后修复了主干中的错误。接下来我准备好发布一个新的补丁,所以我将其标记为1.1。现在我想在标签1.0和1.1之间导出已更改的文件。这可能吗?

6 个答案:

答案 0 :(得分:12)

svn diff --summarize url / to / tag1.0 url / to / tag1.1

将为您提供在这两个标记之间更改的文件列表。您应该能够在脚本中解析该列表,并使用

单独导出每个文件

svn export url / to / file filepath

svn cat url / to / file>文件

如果你正在使用TortoiseSVN:

  • 打开存储库浏览器,浏览到tag1.0,右键单击,选择“mark for comparison”
  • 浏览到tag1.1,右键单击,选择“比较网址”
  • 在文件差异对话框中,选择标签之间更改的所有文件/文件夹(Ctrl + A)
  • 右键单击,选择“导出到...”

答案 1 :(得分:9)

对于TortoiseSVN,这是my solution

  • 打开repo浏览器。
  • 右键单击tag1并选择“标记为比较”
  • 右键单击tag2并选择“比较网址”
  • 在文件列表中选择全部(Ctrl + A)
  • 右键单击并“将选择导出到...”
  • 输入目的地目录,然后按确定

最终导出的是您需要在现有导出的顶部写入的所有文件,以便更新它(不会混淆应用差异)。例如,用于通过FTP更新网站很有用。

唯一需要注意的是,它显然不会处理已删除的文件。虽然它至少会告诉你需要手动删除哪些文件。

答案 2 :(得分:6)

  1. 使用TortoiseSVN,右键单击您的工作文件夹,然后从TortoiseSVN菜单中选择“显示日志”。

  2. 单击上次发布的修订(本例中为#85)

  3. Ctrl +单击HEAD修订版(或您要发布的任何修订版,即#178),以便突出显示旧修订版和新修订版。

  4. 右键单击任一突出显示的修订版本并选择“比较修订版本”。这将打开一个列出所有新修改文件的对话窗口。

  5. 从此列表中选择所有文件(Ctrl + a),然后右键单击突出显示的文件并选择“将选择导出到...”

  6. 来源: http://www.verysimple.com/blog/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/

答案 3 :(得分:1)

svn diff可以创建表示标签之间变化的差异。您可以使用补丁实用程序应用该差异。

http://svnbook.red-bean.com/en/1.0/re09.html

答案 4 :(得分:1)

我们也需要这样的东西。所以我写了一个小的java工具。

希望它对某人有用:github svn-diff-export

答案 5 :(得分:0)

基于Stefan的想法:

REV=123456
URL=https://...
BASEDIR=some_dir
svn diff --summarize -c $REV $URL | while read A B; do 
    svn cat -r $REV $B > ${B##*$BASEDIR}
done
相关问题