有没有人知道如何使用svn从两个标签中仅导出更改的文件?
假设我有标记1.0,然后修复了主干中的错误。接下来我准备好发布一个新的补丁,所以我将其标记为1.1。现在我想在标签1.0和1.1之间导出已更改的文件。这可能吗?
答案 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:
答案 1 :(得分:9)
对于TortoiseSVN,这是my solution:
最终导出的是您需要在现有导出的顶部写入的所有文件,以便更新它(不会混淆应用差异)。例如,用于通过FTP更新网站很有用。
唯一需要注意的是,它显然不会处理已删除的文件。虽然它至少会告诉你需要手动删除哪些文件。
答案 2 :(得分:6)
使用TortoiseSVN,右键单击您的工作文件夹,然后从TortoiseSVN菜单中选择“显示日志”。
单击上次发布的修订(本例中为#85)
Ctrl +单击HEAD修订版(或您要发布的任何修订版,即#178),以便突出显示旧修订版和新修订版。
右键单击任一突出显示的修订版本并选择“比较修订版本”。这将打开一个列出所有新修改文件的对话窗口。
从此列表中选择所有文件(Ctrl + a),然后右键单击突出显示的文件并选择“将选择导出到...”
来源: http://www.verysimple.com/blog/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/
答案 3 :(得分:1)
svn diff可以创建表示标签之间变化的差异。您可以使用补丁实用程序应用该差异。
答案 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