使用子模块从 SVN 转换为 Git
我们目前使用 Subversion 作为我们的版本控制系统,我们决定转向 git。我一直很难将具有标准布局的颠覆系统转移到 git 中。我已经尽可能多地使用了 git svn 。
我需要完成的是将我们的 subversion 系统转换为 git,并包含所有提交历史记录以及标签和分支。然后能够将每个项目分成单独的 git 存储库及其各自的历史记录,然后将每个单独的存储库组合成子模块。
我将不胜感激任何有关如何最轻松地实现这一目标的想法。
svnroot/
|-- branches
|-- tags
|-- trunk
|-- project A
|-- project B
`-- project C
请并谢谢你
We currently use subversion as our version control system, we have decided that we are moving to git. I have been having a hard time moving my subversion system with a standard layout into git. I have used git svn
as much as I can.
What i need to accomplish is convert our subversion system to git with all commit history and as well as tags and branches. Then to be able to separate each of the projects into separate git repositories with their individual history, then combine each of these individual repositories into submodules.
I would appreciate any ideas on how to most easily accomplish this.
svnroot/
|-- branches
|-- tags
|-- trunk
|-- project A
|-- project B
`-- project C
Please and thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的 svn 存储库布局是:
那么您可以为每个项目创建单独的 git 存储库,例如
projectA
:之后您可以创建主 git 存储库 (
git init
) 并为项目添加创建的 git 存储库{A,B,C}
作为其子模块(git submodule
)。
但是这可能不是你想要的;来自
git submodule
手册:如果您想在主项目中修改
project{A,B,C}
并保留项目的联合历史记录,那么子模块不适合该任务。对于提供的 svn 存储库布局:
尝试使用
--trunk
、--branches
、--tags
参数创建 git 存储库,例如:On完成
.git/config
文件应包含类似以下内容:您可以使用 < code>--ignore-paths= 跳过项目中的匹配路径。
If your svn repository layout is:
Then you could create separate git repositories for each project e.g.,
projectA
:After that you could create the main git repo (
git init
) and add the created git repos forproject{A,B,C}
as submodules to it (git submodule
).But it is probably not what you want; from the
git submodule
manual:If you'd like to modify
project{A,B,C}
from within the main project and keep the unite history of the projects then the submodules are not appropriate for the task.For the provided svn repo layout:
try to create the git repositories using
--trunk
,--branches
,--tags
arguments e.g.:On completion the
.git/config
file should contain something like:You could use
--ignore-paths=<regex>
to skip matching paths from the project.