2011-02-02 2 views
5

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

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

ответ

4

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

--prune-empty

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

Так что сделайте снимок с git filter-branch --index-filter '...' --prune-empty, так как это только фильтр фиксации в моем другом ответе, который давал вам проблемы.

+0

похоже, что это сделал трюк, спасибо! – StasM