如何部分导出git存储库?

时间:2009-02-12 09:05:15

标签: git svn git-svn google-code

我的公司在内部使用git,我们将一些工作作为开源使用svn发布在Google Code上。 (它应该支持git,问题可能是相同的。)

问题是我们只发布了我们存储库的 part ,因此使用http://code.google.com/p/support/wiki/ImportingFromGit中描述的git-svn将无效。

  • 如何发布部分存储库? (这是我第一次复制我们想要发布的文件。)
  • 如何同步已发布文件和代码库之间的更改?

3 个答案:

答案 0 :(得分:4)

您可以使用git-filter-branch提取要导入Google代码的部分。

答案 1 :(得分:2)

一种方法可能是为公共资源创建一个单独的Git存储库,并将其作为内部存储库中的子模块包含在内。然后,将公共Git存储库与Google Code SVN存储库同步将会容易得多。

答案 2 :(得分:2)

在git 1.7.11中,我们使用这样的命令只导出存储库中一个目录的原始文件,而不导出git控件和历史记录。请务必在现有目录中运行它,以便显示文件(即首先制作并cd到目标目录):

git archive --remote /local/master/project.git HEAD:open/src | tar x
  • /local/master/project.git 替换为您用于指定存储库的任何内容(我的示例使用本地NFS主服务器)
  • 将HEAD替换为分支名称
  • open / src 替换为存储库中的目录以导出

使用--remote选项,您甚至不需要在克隆副本中运行它,因此它可以嵌入在您的发布机制周围的任何其他进程中。

您可以进一步使用tar选项从所选目录树中排除某些文件。