Така че моят екип в момента използва svn хранилище за нашия проект. Има друг екип, работещ паралелно, но те използват git хранилище. Искам да взема кода на другия отбор и да го слея с нашия. Вече опитах няколко пъти, но продължавам да тегля техния код без обединяване, т.е. просто презаписва нашите файлове. Използвах инструмента git-svn и постигнах малък успех и се опасявам, че нарастващият брой безполезни и боклук ангажименти в нашия svn журнал няма да изглежда добре пред шефа ми.
Това са някои от пречките, които са били на пътя ми:
- Имаме едно svn хранилище с около 10 компонента вътре, където другият екип има репо за всеки компонент.
- Следвам пример, който използва опцията -s, която е съкращение за стандартно оформление (svn обща структура на директория, използваща trunk/branches/tags), което нашето svn repo няма. Не успях да накарам този метод да работи без тази опция, което води до обединяване на всички файлове (в общи линии само копирани) в празна директория, която не ме интересува.
- За предпочитане не бих искал да пазя цялата им история на ангажименти. Искам само един комит, който казва, че съм слял тяхното репо с нашето. Или ангажимент за всяко от техните git repos, които трябва да обединя. Същият пример, споменат в предишния куршум, копира цялата хронология на ангажиментите, което добавя тон ангажименти към нашия журнал, за които моят екип не се интересува.
Ето примера (първият отговор в тази публикация):
mkdir copy-git-repo
cp -a orig-git-repo/. copy-git-repo/
cd copy-git-repo/
svn mkdir --parents https://svn/url/PROJECT/trunk -m "Trying to merge of of their git repos into our svn"
git svn init https://svn/url/PROJECT -s
git svn fetch
git rebase trunk master
# if there are merge conflicts
git status
# deal with merge conflicts listed
git add .
git rebase --continue
git svn dcommit
Някой вижда ли грешка, която съм направил?