2008-10-17 16 views
3

有谁知道一个简单的方法将一个旧版项目(其版本控制系统是一系列日期文件夹)导入到SVN中,以便修订历史保存?将旧版项目(日期系列的文件夹)导入到Subversion中

我继承的项目不在版本控制之下,并且有数百个文件夹,每个文件夹的日期类似于:2006-11-26,2006-11-27等等......谢天谢地,看起来他们做得很好即使在(几周)没有任何变化的情况下,我们也在努力创建文件夹。

我很想是一个脚本/工具,将创建一个文件夹最古老的一个新的存储库,然后依次&自动应用所有的颠覆命令,以后每一个文件夹变成一个新的修订。

我希望这是有道理的。我的老贝壳脚本试图自己去尝试解决这个问题,但是a)我确信它的工作比我最初想象的要多,b)这不是我最好的时间(我不是专家编写shell脚本),c)我敢打赌,某人已经完成了这个任务。

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

我希望一切都有道理。

非常感谢您的帮助。

P.S.我宁愿在Linux下这样做,但如果有一个(喘气!)Windows解决方案,乞丐不能是挑选者,他们可以吗?

回答

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的值)实际设置服务器日期。但是,这可能有点过头了。

+0

你可以传递--message“Commit version from $ d” - 非交互式到svn commit。这增加了一个提交消息并防止任何交互式问题。 – 2008-10-17 21:20:40

+0

这不会删除被删除的文件。 – wnoise 2008-10-17 22:24:07

2

对于此用例load-dirs.pl已创建,它将占用您的目录并将其导入到Subversion中,并且还可以保留用于重命名和删除的版本历史记录。在subversion版本库里面有一个很好的文档(上面的链接)

相关问题