在使用git svn时,git是否可以不存储特定文件夹的历史记录?
简而言之:有没有办法在git svn repo中禁用存储特定文件夹的完整历史记录 我们有相当大的SVN回购和大的结帐。我想将它迁移到Git以进行本地开发,因为Git的速度可以达到在使用git svn时,git是否可以不存储特定文件夹的历史记录?,git,git-svn,Git,Git Svn,简而言之:有没有办法在git svn repo中禁用存储特定文件夹的完整历史记录 我们有相当大的SVN回购和大的结帐。我想将它迁移到Git以进行本地开发,因为Git的速度可以达到update和status的数量级 当我简单地进行git svn克隆时,它会创建非常大的回购。大到可以比我的整个硬盘更大。问题在于历史记录太大的二进制目录。 正确的本地构建需要最新的二进制文件,但我的开发过程根本不需要历史记录。我自己永远不会改变它们。 我只想存储特定文件夹的最新版本,或者可能是历史记录,但不超过一周 我
update
和status
的数量级
当我简单地进行git svn克隆时,它会创建非常大的回购。大到可以比我的整个硬盘更大。问题在于历史记录太大的二进制目录。正确的本地构建需要最新的二进制文件,但我的开发过程根本不需要历史记录。我自己永远不会改变它们。
我只想存储特定文件夹的最新版本,或者可能是历史记录,但不超过一周 我只能为
git svn fetch
找到filter
,它完全排除了特定的文件夹。这不正是我需要的
我可以使用Cron任务从特定文件夹中删除历史记录,但我不知道如何创建历史记录。另外,Cron也不能解决git svn克隆的第一个问题
p.S.无法通过任何方式更改SVN存储库结构。您可以通过指定要克隆多少SVN历史记录来进行浅拷贝。例如:
$ git svn clone -s -r534:HEAD http://some/svn/repo
这将仅克隆自版本534以来的历史记录。您只需为您的存储库找出正确的编号,并提取(例如)最后6个修订。只需指定一个比当前版本小6的数字
更新:
在仔细考虑了您的问题之后,我认为浅层克隆并不是正确的选择,因为您无法推送/合并它们-它们只是为您通过电子邮件向它们发送补丁而设计的
在执行git svn克隆之前,您是否尝试过将相关文件标记为二进制文件?在运行git init
之后,您可以通过将以下行添加到存储库根目录中来实现这一点:
*.jpg binary
显然,将扩展名替换为二进制文件的扩展名(或者我想具体命名它们)。Git试图自动识别二进制文件,但并不总是正确。您可以通过指定要克隆多少svn历史来进行浅拷贝。例如:
$ git svn clone -s -r534:HEAD http://some/svn/repo
这将仅克隆自版本534以来的历史记录。您只需为您的存储库找出正确的编号,并提取(例如)最后6个修订。只需指定一个比当前版本小6的数字
更新:
在仔细考虑了您的问题之后,我认为浅层克隆并不是正确的选择,因为您无法推送/合并它们-它们只是为您通过电子邮件向它们发送补丁而设计的
在执行git svn克隆之前,您是否尝试过将相关文件标记为二进制文件?在运行git init
之后,您可以通过将以下行添加到存储库根目录中来实现这一点:
*.jpg binary
显然,将扩展名替换为二进制文件的扩展名(或者我想具体命名它们)。Git试图自动识别二进制文件,但并不总是正确无误。我最终找到了下一个解决方案:
现在我有了一个非常奇怪的工作区,其中一些文件夹由svn管理,另一些文件夹由git管理,但现在看来这是一个可行的解决方案。我最终得到了下一个解决方案:
现在我有一个非常奇怪的工作区,其中一些文件夹由svn管理,另一些文件夹由git管理,但现在看来这是一个可行的解决方案。据我所知,这对我没有帮助。我想有src文件的完整历史和二进制文件的浅历史。更重要的是,我希望定期从存储库中获取,但仍然不会保存太多历史记录。据我所知,Git总是将所有文件的整个历史记录存储在本地存储库中。二进制/文本标志不会改变这一点。看起来这是一个答案。就我所能理解的而言,这对我没有帮助。我想有src文件的完整历史和二进制文件的浅历史。更重要的是,我希望定期从存储库中获取,但仍然不会保存太多历史记录。据我所知,Git总是将所有文件的整个历史记录存储在本地存储库中。二进制/文本标志不会改变这一点。看来这是一个答案。