Расщепление огромного мерзавца - PullRequest
5 голосов
/ 03 февраля 2011

Я пытаюсь разделить git-репо, используя рецепт , описанный в этом вопросе , но рассматриваемое git-репо огромно и имеет тысячи коммитов, поэтому при запуске запускается ограничение командной строки.команда, как описано, и фильтр фиксации не работает.Если я попытаюсь сделать это поэтапно (сначала применяя фильтр индекса, затем фильтр фиксации), фильтр индекса работает нормально, но фильтр фиксации зависает и начинает использовать огромные объемы памяти (3G +), поэтому мне приходится его убивать.есть идеи как это сделать?Может, я здесь что-то не так делаю?

Для тех, кто не читает другой вопрос, задача состоит в том, чтобы разбить пару каталогов из очень большого git-репо на другое, сохранив при этом историю этих каталогов.

1 Ответ

4 голосов
/ 03 февраля 2011

Я думаю, что это было добавлено с тех пор, как я написал этот ответ:

--prune-empty

Некоторые виды фильтров будут генерировать пустые коммиты, которые оставили дерево без изменений.Этот ключ позволяет git-filter-branch игнорировать такие коммиты.Хотя этот переключатель применяется только для коммитов, имеющих одного и только одного родителя, он, следовательно, сохраняет точки слияния.Также эта опция не совместима с использованием --commit-filter.Хотя вам просто нужно использовать функцию git_commit_non_empty_tree "$ @" вместо идиомы git commit-tree "$ @" в вашем фильтре фиксации, чтобы это произошло.1010 *, поскольку в моем другом ответе только фильтр коммитов доставлял вам проблемы.

...