Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用git svn时,git是否可以不存储特定文件夹的历史记录?_Git_Git Svn - Fatal编程技术网

在使用git svn时,git是否可以不存储特定文件夹的历史记录?

在使用git svn时,git是否可以不存储特定文件夹的历史记录?,git,git-svn,Git,Git Svn,简而言之:有没有办法在git svn repo中禁用存储特定文件夹的完整历史记录 我们有相当大的SVN回购和大的结帐。我想将它迁移到Git以进行本地开发,因为Git的速度可以达到update和status的数量级 当我简单地进行git svn克隆时,它会创建非常大的回购。大到可以比我的整个硬盘更大。问题在于历史记录太大的二进制目录。 正确的本地构建需要最新的二进制文件,但我的开发过程根本不需要历史记录。我自己永远不会改变它们。 我只想存储特定文件夹的最新版本,或者可能是历史记录,但不超过一周 我

简而言之:有没有办法在git svn repo中禁用存储特定文件夹的完整历史记录

我们有相当大的SVN回购和大的结帐。我想将它迁移到Git以进行本地开发,因为Git的速度可以达到
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试图自动识别二进制文件,但并不总是正确无误。

我最终找到了下一个解决方案:

  • 有三个包含二进制文件的文件夹,所以我将它们添加到git svn忽略的文件夹中,这样它们就不会被git存储
  • 使用svn版本控制将这些文件夹手动添加到git工作空间
  • 编写脚本,通过cron立即更新这些文件夹

  • 现在我有了一个非常奇怪的工作区,其中一些文件夹由svn管理,另一些文件夹由git管理,但现在看来这是一个可行的解决方案。

    我最终得到了下一个解决方案:

  • 有三个包含二进制文件的文件夹,所以我将它们添加到git svn忽略的文件夹中,这样它们就不会被git存储
  • 使用svn版本控制将这些文件夹手动添加到git工作空间
  • 编写脚本,通过cron立即更新这些文件夹

  • 现在我有一个非常奇怪的工作区,其中一些文件夹由svn管理,另一些文件夹由git管理,但现在看来这是一个可行的解决方案。

    据我所知,这对我没有帮助。我想有src文件的完整历史和二进制文件的浅历史。更重要的是,我希望定期从存储库中获取,但仍然不会保存太多历史记录。据我所知,Git总是将所有文件的整个历史记录存储在本地存储库中。二进制/文本标志不会改变这一点。看起来这是一个答案。就我所能理解的而言,这对我没有帮助。我想有src文件的完整历史和二进制文件的浅历史。更重要的是,我希望定期从存储库中获取,但仍然不会保存太多历史记录。据我所知,Git总是将所有文件的整个历史记录存储在本地存储库中。二进制/文本标志不会改变这一点。看来这是一个答案。