webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

Изтегляне на файлове от git repo в svn repo

Така че моят екип в момента използва 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 

Някой вижда ли грешка, която съм направил?

07.03.2019

Отговори:


1

Ако това, което сте свикнали да правите, е svn, бих ви посъветвал да отидете направо с svn (въпреки че го мразя). И така... ако погледнете репото на другия екип (този, който се работи върху git), можете ли да картографирате svn ревизии (от вашето svn repo) към ревизии на git repo... и имам предвид, 1 към 1, не близки ревизии. Трябва да има точни съвпадения на ревизиите.

Да предположим, че искате да обедините git клон X (от тяхното репо) във вашия стволен клон (от вашето репо). Ако можете да намерите предшественик на X, който е еквивалентен 1 към 1 на предшественик на вашия ствол, тогава бихте могли:

  • създайте клон на вашето svn repo, което започва от предшественика, за който говорим
  • Премахнете всички файлове от проекта в този клон (не ангажирайте)
  • Вземете копие на съдържанието на клон X (на git repo..... съдържанието в самия връх на X) и го поставете вътре в клона. И сега ангажирайте svn. На този етап ревизията, която току-що създадохте, има всички разлики между предшественика на X, който успяхте да видите както на git, така и на svn, и върха на клон X.
  • Сега можете да вземете този клон, който сте създали, и да опитате да го обедините в ствола.

Като последен съвет (и аз съм мнителен, съжалявам): помислете дали да преминете към git завинаги. Отнема малко усилия, за да свикнете с разликите от svn... но няма да съжалявате.

08.03.2019
  • Екипът ми скоро ще премине към git. Благодаря ти. 08.03.2019
  • Нови материали

    Записване на грешки — Как да записвате грешки във вашето приложение, за да ги отстраните по-късно
    Записването на грешки е важна част от „обработването на грешки“. Накратко, когато възникнат определени грешки в програмите, вие искате да знаете за това. Това е особено важно при грешки. Ти..

    Кратко въведение в теорията на графите
    Кратко въведение в теорията на графите Втора част: внедряване на python на пълни графики В моята предишна статия въведох три основни концепции за графите: върхове, ръбове и тегла. В тази..

    Днес ще пиша за машинно обучение. Смятам се за ентусиаст, а не за експерт, така че имайте това предвид. С това казано, искам...
    Днес ще пиша за машинно обучение. Смятам се за ентусиаст, а не за експерт, така че имайте това предвид. С това казано искам да обясня защо машинното обучение има значение. За да бъда съвсем..

    Какво е структурно типизиране и как Typescript го използва в своя полза?
    Всички знаят тези дни, че „Typescript е строго синтактично надмножество на JavaScript и добавя незадължително статично въвеждане към езика.“. Но какво всъщност означава? Защо миграцията от..

    3 начина за премахване на дубликати от масив в Javascript
    Вие сте уеб разработчик? Програмист ли си? Тогава ще сте запознати с JavaScript и различните му вградени функции, методи и т.н. за различни реализации, проблеми и цели. Един от тези широко..

    Архитектура и обучение на конволюционни невронни мрежи (7 точки):
    Тази публикация предоставя подробности за архитектурата на Конволюционната невронна мрежа (CNN), функциите и обучението на всеки слой, завършвайки с резюме на обучението на CNN...

    Създайте разширение за Chrome с помощта на Angular
    Този урок е базиран на манифеста на разширението на chrome версия 3 (MV3), а също и на Angular версия 2+ (2, 3 и...). Ако не сте използвали манифест версия 3, можете да следвате този урок ,..