我正在寻找一种简单的方法来导入一些继承的SVN代码(虽然它在包含分支/标签和主干的SVN文件夹结构中,但是没有任何.svn文件夹,因此不包含任何历史记录或SVN用户等)。我们只有完整的旧SVN代码,没有.svn文件夹,也无法访问原始的SVN仓库。
答案 0 :(得分:1)
.svn
目录包含项目中最后签出的文件版本。从概念上讲,它类似于Git上HEAD
指向的提交内容。 Subversion使用这些信息来了解修改了哪些文件(并显示了差异),并将文件还原为上次更新(签出)的版本。
由于您无法访问Subversion存储库,因此.svn
目录的内容几乎无用。
然后在项目运行的根目录中删除.svn
目录:
git init
git add .
git commit -m "the initial import"
替换文字"初始导入"用你想要的任何提交信息。
详细了解Git命令:https://git-scm.com/docs
答案 1 :(得分:1)
好吧,如果您只拥有没有历史记录的最新版本,那么您可以做的最好就是将其作为新代码导入git。
您不知道分支和标记之间的关系,因此您可以简单地将每个作为单独的根导入,或者您可以尝试从明显的属性重建关系,例如每个版本都基于之前的版本。
因此,您只需创建一个空的git存储库,然后为每个分支/标记创建:
准备合适的分支。
master
开头,没有父级。这是您导入trunk
的地方,但在此之前,您导入之前知道的任何标记。git checkout -b
新名称 base 从已知基础创建新分支。例如,如果您知道某个分支基于特定版本。git checkout --orphan
新名称创建一个没有父级的新分支。对于您不知道分支基于什么的情况。见git-checkout。删除以前的内容:git rm -rf .
复制SVN分支/标记的内容。
添加所有内容git add .
提交:git commit -m
消息。
冲洗并重复直至完成。
如果您不关心关系,可以轻松编写此脚本。如果您想重建某些历史记录,例如主人成功发布第3版,然后成功发布第2版和第1版,你必须手动排序并选择分支。
您也可以在每个目录中简单地git init
+ git add .
+ git commit
,并以适当的名称将每个目录推送到相同的中央仓库,但这不会让您重建任何历史记录。