Hug*_*ira 6 version-control svn
我有一个中等大小的存储库(大约 2500 个版本),来自我过去 3 年一直在运行的项目。那里有一个特定的文件(我们称之为 foo.xml),我现在想分析它的演变。理想情况下,我正在寻找的是将文件具有的每个版本导出到一个目录中,并附加日期,例如
2007_08_08_foo.xml
2007_08_09_foo.xml
2007_08_15_foo.xml
...
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最快方法是什么?
我不认为 SVN 内置了该功能,但是如果您能够在保存 SVN 存储库的服务器上运行命令(并假设服务器具有可用的标准 UNIX/Linux 工具),则此 bash 脚本应该为你:
REPOS=/path/to/repos
FILE=dir/foo.xml
for rev in "$(svnlook history $REPOS $FILE | awk 'NR > 2 { print $1 }')"; do
rev_date=$(svnlook date -r $rev $REPOS | awk '{ print $1 }')
svnlook cat -r $rev $REPOS $FILE > ${rev_date}_${FILE}
done
Run Code Online (Sandbox Code Playgroud)
这将生成格式为 的文件名2007-08-08_foo.xml
。当然,您必须/path/to/repos
将第一行更改为存储库的实际文件系统路径(不是 URL),并将dir/foo.xml
第二行更改为存储库中文件的路径。
如果日期中包含下划线对您来说真的很重要,请按如下方式更改第 4 行:
rev_date=$(svnlook date -r $rev $REPOS | awk '{ print $1 }' | tr - _)
Run Code Online (Sandbox Code Playgroud)
还要记住,如果文件在某一天被修改过不止一次,那么只有每天的第一次编辑才会真正反映在写入的文件中。
归档时间: |
|
查看次数: |
5488 次 |
最近记录: |