Есть проект. Хочется его опубликовать. Но часть из негоявляется тайной. Как быть?
Есть ровно 2 тулы, которые позволили мне вчера это сделать:
- BFG Repo-Cleaner
- git filter-branch
Запишу тут скрипт, который уверен поможет в будущем, когда потребуется снова.
Прежде всего стоит сделать 2 копии проекта, т.к. команды будут менять их коренным образом и в случае ошибки придется повторить всю процедуру, удаляя и копируя из оригинала.
Все команды будем ранать из корня проекта.
Все команды выполняются в bash.
Первая папка - в ней оставим все кроме папки (всех папок с этим именем):
# файл bfg-1.15.0.jar берем тут https://repo1.maven.org/maven2/com/madgag/bfg/1.15.0/bfg-1.15.0.jar
java -jar bfg-1.15.0.jar --delete-folders folder_to_extract --no-blob-protection
Вторая папка - из нее удалим все, кроме этой папки:
# удалить все удаленные репозитории, в них нет смысла, т.к. появится новый
git remote | xargs -n 1 git remote remove
# удалить все теги
git tag -d $(git tag -l)
# удалить все недокомиченные локальные вресии
git stash & git stash drop 0
# удаление всех веток кроме текущей
git branch | grep -v "$(git symbolic-ref --short HEAD)" | xargs git branch -D
# тут указывается полный путь, следовательно придется повторить несколько раз для каждого такого вхождения
# оставить только текущую папку
git filter-branch --subdirectory-filter ./src/main/resources/folder_to_extract -- --all
# удалить все что осталось после фильтрации
git stash & git stash drop 0
На здоровье!