git filter-branch --подкаталог-фильтр

Есть ли способ git filter-branch --subdirectory-filter без перемещения подкаталога в корень?

Я перебазировал первоначальную фиксацию, чтобы вернуть их обратно, но это больно и не получается все, когда файлы добавляются позже. В общем, не лучший метод.

Я также нашел фильтр подкаталогов Git с существующей структурой каталогов, но он принят решение кажется мне хакерским/опасным.


person donatJ    schedule 18.03.2016    source источник
comment
Вы категорически против использования --tree-filter? (Это очень медленно, но --tree-filter позволит легко получить желаемый результат.) В качестве альтернативы вы можете использовать --index-filter, который удаляет все, что не находится в подкаталоге, но это немного сложнее.   -  person torek    schedule 19.03.2016
comment
Я попробовал, но наш репозиторий настолько велик, что это займет часы.   -  person donatJ    schedule 21.03.2016
comment
Итак, xkcd.com/974 ... но: если у вас есть работающий древовидный фильтр, вы можно преобразовать его в индексный фильтр, который делает то же самое. Использование индексного фильтра намного быстрее, поскольку позволяет git избежать шагов извлечения/перестроения. По сути, вы заменяете фактические rms на git rm --cached, и вместо чтения рабочего дерева вы читаете дерево git, связанное с фиксацией, которую фильтрует индексный фильтр (используя git ls-tree).   -  person torek    schedule 21.03.2016