目前,我正在尝试设置git
Subversion 存储库的前端。
我的 Subversion 存储库是一个大型存储库,由几个相互关联的项目组成:
svn-root
|-- project1
| |-- branches
| |-- tags
| `-- trunk
|-- project2
| |-- branches
| |-- tags
| `-- trunk
`-- project3
|-- branches
|-- tags
`-- trunk
因为有时需要在不同的项目之间移动文件,所以我不想将存储库拆分为单独的存储库。
我打算使用git-svn
来设置 git 前端,但我不知道如何将 svn 准确映射到 git 结构。这两个系统处理方式branches
非常tags
不同,我怀疑这是否可行。
为了简化问题,我会只保留git svn clone
整个根目录,让branches/tags/trunk
目录就在那里。但这肯定会导致branches
和tags
目录中的文件过多。在 Subversion 中,只需将签出深度设置为 即可immediates
,这将仅签出分支/标签标题,而不签出目录内容。但我不知道这是否可以在 中完成git
。
git-svn 把我搞乱了。我希望有更优雅的解决方案。
答案1
确实没有好的方法可以做到这一点。Git 不支持部分签出。因此,要么将所有内容保存在一个存储库中并一次性签出所有内容,要么使用子模块并将文件移动量保持在最低限度。另请参阅https://stackoverflow.com/questions/1365541/how-to-move-files-from-one-git-repo-to-another-not-a-clone-preserving-history关于后一点。
答案2
不过,你不必检查整个历史记录。以下语句仅检查最近的更改:
git clone --depth 1 [email protected]:project
这样的签出并不适用于编辑和重新签入,但对于共享当前代码库或部署到生产等非常有用。