我有一个5年的SVN回购,出于某种商业原因,我们想转到TFS。从codeplex到TFS的SVN工具有缺陷并且冻结。
想到了一个不同的途径:将SVN克隆到GIT,并将GIT回购推送到TFS。下面是我的脚本
for i in "${!SVN_TRUNK[@]}"
do
mkdir ${GIT_REPO[$i]}
cd ${GIT_REPO[$i]}
fromRevision=$(svn log -l 1 -r{2013-06-01}:HEAD ${SVN_TRUNK[$i]} | awk '/^r[0-9]+/ {sub(/r/,"",$1); print $1}' )
toRevision=$(svn info -rHEAD ${SVN_TRUNK[$i]} | grep Revision | cut -d' ' -f2)
git svn init ${SVN_TRUNK[$i]} --no-metadata
echo 'svn fetch ' ${GIT_REPO[$i]} ' from ' $fromRevision ' to ' $toRevision
git svn fetch -r $fromRevision:$toRevision
git tf configure http://tfs:8080/tfs/defaultcollection '$/Portfolio Implementation/Versions/Iteration36RC/'${GIT_REPO[$i]}
git tf checkin --deep
cd ..
done
这带来了许多问题:
1.) No SVN revison in TFS to commits
2.) Date of all checkin to TFS is current date. I want date for the commit in SVN
3.) authors are all gone for all commits to TFS
4.) when I run git svn rebase to bring latest changes to my git repo it
says "Unable to determine upstream SVN information from working
tree history"
让我知道有人试图这样做,或者帮助我了解发生了什么。
有很多选项,但您无法解决提交日期的重置问题,TFS始终记录实际提交到TFS的正确时间,而不是历史日期。
TFS的SVN桥允许您让TFS像普通的SVN存储库一样工作,允许您执行SVN->SVN迁移。TFS集成工具集应该也能工作,但它在组织Subversion存储库的某些方式方面存在问题。