我很高兴在我的本地主机上使用我自己的Git仓库开发一个Django项目。我正在创建分支机构,快乐地投入和合并。路径类似于:
/path/to/git/django/
结构是:
project
├── README
├── REQUIREMENTS
├── __init__.py
├── fabfile.py
├── app1
├── manage.py
├── app2
├── app3
├── app4
└── project
我的开发团队的其余成员仍然使用Subversion,这是一个包含多个项目的巨型仓库。当我在我的localhost上使用它时,我仍在使用Git(通过git-svn)。路径类似于
/path/to/giant-svn-repo/
项目就像这样:
giant-svn-repo
|── project1
|── project2
|── project3
└── project4
当我想使用远程svn repo的最新更改时,我只需要执行git-svn rebase。然后,对于新功能,我创建一个新的分支,开发,提交,签出主,合并分支与主,删除分支,然后最终的git-svn dcommit。凉。一切都运作良好。
这两个存储库(让我们称之为git-django和git-svn)现在完全独立。
现在我想将git-django添加到git-svn repo中作为一个新项目(即在名为 djangoproject 的子目录中)。我使用以下工作流程很好地工作:
从命令行看起来像:
> cd /path/to/giant-svn-repo
> git checkout -b my_django_project
> mkdir /path/to/giant-svn-repo/djangoproject
> git remote add -f local_django_dev /path/to/git/django/project
> git merge -s ours --no-commit local_django_dev/master
> git read-tree --prefix=djangoproject -u local_django_dev/master
> git commit -m 'Merged local_django_dev into subdirectory djangoproject'
这有效,但除了django git repo在/ path / to / giant-svn-repo / djangoproject中的内容之外,它还位于存储库树的主根目录中!
project
├── README
├── REQUIREMENTS
├── __init__.py
├── fabfile.py
├── djangoproject
│ ├── README
│ ├── REQUIREMENTS
│ ├── __init__.py
│ ├── fabfile.py
│ ├── app1
│ ├── manage.py
│ ├── app2
│ ├── app3
│ ├── app4
│ └── project
├── app1
├── manage.py
├── app2
├── app3
├── app4
└── project
我似乎污染了巨型svn-repo所有项目所在的父目录。
有什么方法可以阻止这种情况发生吗?
(顺便说一下,这一切都是在测试目录结构中完成的 - 我还没有破坏任何东西。只是想弄清楚最好的方法)
我确信它只是(重新)为 git merge , git read-tree 或 git commit 定义了一个参数但是我几乎是我的git kung-fu的极限。
提前致谢。