有没有人知道将遗留项目(其“版本控制系统”是一系列过时的文件夹)导入SVN的简单方法,以便保留修订的历史记录?
我继承的项目不受版本控制,并且有数百个文件夹,每个文件夹的日期如下:2006-11-26,2006-11-27等...谢天谢地,看起来他们做得很好努力创建文件夹,即使(几周)没有任何改变。
我喜欢的是一个脚本/工具,它将使用最旧的文件夹创建一个新的存储库,然后按顺序&自动应用所有subversion命令将每个后续文件夹转换为新版本。
我希望这是有道理的。我自己的旧shell脚本试图试图自己解决这个问题,但是a)我确信这比我最初想象的还要多,b)这不是我最好的时间(我不是专家)写shell脚本),c)我打赌有人已经这样做了。
额外信用:让脚本/工具根据文件夹名称修改时间戳属性,以便颠覆中的历史更接近现实。
我希望一切都有道理。
非常感谢您的帮助。
P.S。我更喜欢在Linux下完成这一切,但如果有一个(喘气!)Windows解决方案,乞丐不能选择,他们可以吗?
答案 0 :(得分: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历史记录将显示当前日期提交的所有内容。也许您可以使用'date'命令在每次复制和提交时根据目录名称($ d的值)实际设置服务器日期。然而,这可能有点过头了。
答案 1 :(得分:2)
对于此用例,load-dirs.pl已创建,它将获取您的目录并将其导入Subversion,还可以维护重命名和删除的版本历史记录。 subversion存储库(上面的链接)
中提供了一个很好的文档