Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

вторник, 21 января 2025 г.

Разделяем проект на части вместе с git репозиторием

Есть проект. Хочется его опубликовать. Но часть из негоявляется тайной. Как быть?

Есть ровно 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
На здоровье!

Комментариев нет:

Отправить комментарий