3

有谁知道将遗留项目(其“版本控制系统”是一系列过时的文件夹)导入SVN的简单方法,以便保留修订历史?

我继承的项目不受版本控制,并且有数百个文件夹,每个文件夹的日期如下:2006-11-26、2006-11-27 等...谢天谢地,他们在努力创建文件夹,即使(数周)没有任何改变。

我喜欢的是一个脚本/工具,它将使用最旧的文件夹创建一个新的存储库,然后按顺序自动应用所有 subversion 命令以将每个以后的文件夹转换为新的修订版。

我希望这是有道理的。我的旧 shell 脚本编写者很想自己解决这个问题,但是 a) 我确信这比我最初想象的要多,b) 这不是我时间的最佳利用(我不是这方面的专家)编写 shell 脚本)和 c)我敢打赌有人已经这样做了。

额外积分:让脚本/工具也根据文件夹名称修改时间戳属性,以便颠覆中的历史更接近现实。

我希望一切都说得通。

非常感谢您的帮助。

PS我宁愿在Linux下做这一切,但如果有一个(喘气!)Windows解决方案,乞丐不能选择,可以吗?

4

2 回答 2

3

我认为shell脚本解决方案不会太难。像这样的东西:

for d in 200*
do
    cp -a $d/* svndir/
    cd svndir
    svn add *
    svn commit
    cd ..
done

我知道相当幼稚的代码,但我认为有点像这样的东西可以完成这项工作(前提是已经有一个存储库签入到 svndir)。可能 svn commit 有一个参数跳过了输入注释的要求,否则这将非常乏味。

cp -a 将保留时间戳,但当然 svn 历史记录将显示当前日期提交的所有内容。或许您可以在每次复制和提交时使用“日期”命令根据目录名称($d 的值)实际设置服务器日期。然而,这可能有点过头了。

于 2008-10-17T20:37:05.270 回答
2

对于这个用例,创建了load-dirs.pl,它获取您的目录并将它们导入 Subversion,还可以维护版本历史记录以进行重命名和删除。subversion 存储库中提供了一个很好的文档(上面的链接)

于 2008-10-18T15:12:50.523 回答