← До списку лабораторних по Git
Повний опис / сценарій лабораторної:
Meta: зрозуміти як за допомогою filter-repo або схожих інструментів виділити один каталог у окремий репозиторій зі збереженням історії. Krok 1. Створити монорепозиторій з кількома каталогами. Komandy: cd ~; mkdir split74; cd split74; git init; mkdir serviceA serviceB; echo "A code" > serviceA/a.txt; echo "B code" > serviceB/b.txt; git add .; git commit -m "Initial mono layout" Krok 2. Зробити кілька комітів які змінюють лише serviceA. Komandy: echo "A change 1" >> serviceA/a.txt; git add serviceA/a.txt; git commit -m "Change A1"; echo "A change 2" >> serviceA/a.txt; git add serviceA/a.txt; git commit -m "Change A2" Krok 3. Аналогічно змінити serviceB. Komandy: echo "B change" >> serviceB/b.txt; git add serviceB/b.txt; git commit -m "Change B1" Krok 4. Ознайомитися з довідкою по filter-repo або подібному інструменту. Poyasnennya: подивись як задати шлях який потрібно залишити. Krok 5. Створити копію репозиторію для експерименту. Komanda: cd ~; cp -r split74 split74_serviceA Krok 6. У копії запустити filter-repo для каталогу serviceA. Komanda: cd split74_serviceA; git filter-repo --path serviceA Poyasnennya: історія збережеться тільки для цього каталогу, а файли будуть у корені. Krok 7. Перевірити що файл a.txt тепер у корені і має усю історію змін. Komandi: ls; git log --oneline -n 5 Krok 8. Подумати як повʼязати новий репозиторій serviceA з основним монорепозиторієм через посилання у документації. Krok 9. Занотувати ризики при такому поділі, зокрема зміну усіх хешів і необхідність оновлення систем CI. Krok 10. Mini zvit. Zavdannya: опиши коли варто перевести один модуль у окремий репозиторій замість продовження роботи у монорепозиторії.