6

我正在使用一个大型 svn 存储库(30,000 多个修订版)。我正在使用 git-svn,但成功有限。

我的主要问题是 svn 存储库包含对大型二进制文件 (~30MB) 的频繁更新。我不关心这些文件的历史,但我关心这些文件的当前版本。

如果自我上次 svn rebase 以来对大型二进制文件进行了多次更新(这很常见),则 git svn rebase 运行速度非常慢。我的 git 数据库也增长得很快。我正在寻求解决这两个关键问题。

理想情况下,我想做的是完全忽略 svn 中的这些大文件,然后运行一个只获取最新版本的脚本,然后我会用我的 .gitignore 阻止它。不过,我对其他选择非常开放。

4

3 回答 3

10

--ignore-paths您可以使用以下选项忽略某些文件git svn

 --ignore-paths=<regex>
               This allows one to specify a Perl regular expression that will
               cause skipping of all matching paths from checkout from SVN.
               The --ignore-paths option should match for every fetch
               (including automatic fetches due to clone, dcommit, rebase,
               etc) on a given repository.

                   config key: svn-remote.<name>.ignore-paths

               If the ignore-paths config key is set and the command line
               option is also given, both regular expressions will be used.

               Examples:

               Skip "doc*" directory for every fetch

                       --ignore-paths="^doc"

               Skip "branches" and "tags" of first level directories

                       --ignore-paths="^[^/]+/(?:branches|tags)"
于 2013-04-10T10:30:56.090 回答
1

git svn 选项 --ignore-paths=

在将 svn 存储库转换为 git 时排除不需要的二进制文件很有用

如果您知道二进制文件的文件扩展名,那么您可以编写一个正则表达式来排除它们,例如,

.jar 文件:--ignore-paths=".*.jar$"

于 2017-12-21T19:45:08.693 回答
0

据我所知,我认为使用 git-svn 不可能这样做,因为 git-svn 获取整个 svn 信息并将其转换为 git。检查你的包文件,你会发现它是一个巨大的文件。

我要做的是将巨大的文件/文件夹添加到 .gitignore 中,这样它根本不会处理它们。

一个不错的解决方案在这里发布:http: //alblue.bandlem.com/2011/11/git-tip-of-week-git-bigjobbies.html

于 2013-04-09T21:39:44.887 回答