我的公司在内部使用 git,我们将我们的一些工作作为开源发布在使用 svn 的 Google Code 上。(如果它支持git,问题可能是一样的。)
问题是我们只发布了我们存储库的一部分,因此使用http://code.google.com/p/support/wiki/ImportingFromGit上描述的 git-svn将不起作用。
- 如何发布部分存储库?(我第一次只是复制了我们想要发布的文件。)
- 如何同步已发布文件和 Code 的存储库之间的更改?
我的公司在内部使用 git,我们将我们的一些工作作为开源发布在使用 svn 的 Google Code 上。(如果它支持git,问题可能是一样的。)
问题是我们只发布了我们存储库的一部分,因此使用http://code.google.com/p/support/wiki/ImportingFromGit上描述的 git-svn将不起作用。
您可以使用git-filter-branch提取要导入 Google 代码的部分。
在 git 1.7.11 中,我们使用这样的命令仅导出存储库中一个目录的原始文件,而不导出 git 控制和历史记录。确保在您希望文件出现的现有目录中运行它(即首先制作和 cd 到目标目录):
git archive --remote /local/master/project.git HEAD:open/src | tar x
使用 --remote 选项,您甚至不需要在克隆副本中运行它,因此它可以嵌入到您围绕发布机制包装的任何其他进程中。
您可以进一步使用 tar 选项从选定的目录树中排除某些文件。
一种方法可能是为公共内容创建一个单独的 Git 存储库,并将其作为子模块包含在内部存储库中。然后将公共 Git 存储库与 Google Code SVN 存储库同步会容易得多。