Де я можу знайти ресурси "SVN для користувачів Git"? [зачинено]


18

Тож я взяв роботу, де фірма використовує SVN (але в майбутньому перейде до Git). Проблема в тому, що я не знаю SVN. Я спробував численні запити Google, і все, що я можу знайти, - це навчальні посібники SVN-> Git, блоги "Чому Git краще, ніж SVN", і певний "шпаргалка", яка дає (деякі) порівнянні команди ...

Якщо прочитати книгу O'Reilly про SVN, які короткі (але не надто короткі) інструкції до SVN для користувачів Git?


3
Якщо коротко: а) немає індексу, б) svn вгору = git тягнути, в) svn фіксувати = git фіксувати && git push г) гілки наслідуються каталогами ... ;-)
johannes

1
Я не впевнений, як я можу зробити це більше на тему ...
agent154,

5
У жодному разі. Поруч із чим-небудь є офтопік на P.SE.
JensG

@ agent154 не вимагайте від нас пошукової системи з натовпу. Визначте проблему, яка виникає - проблема не в тому, "де я можу знайти речі на svn", це "Я намагаюся щось зробити, і я не можу зрозуміти, як це зробити". Якщо щось є специфічним для команди 'svn', і ви працюєте над способом її написання, запитайте в Stack Overflow. Якщо щось стосується робочого процесу та організації svn (коли розгалужувати, коли об’єднувати, як працювати з іншими розробниками) - запитайте це тут.

2
Я думаю, що виявлена ​​проблема - це брак ресурсів, які навіть є дещо віддаленими для розуміння SVN як користувача Git. Чесно кажучи, я вважаю дискусію щодо цього супер корисною, пролітавши кілька сторінок результатів Google / DuckDuckGo, не знайшовши нічого, крім того, що згадувало ОП.
Метаграф

Відповіді:


8

Канонічна довідка - « Підривна книга» . Незалежно від ваших минулих навичок, прочитайте це з нового і ви отримаєте всю необхідну інформацію про використання. Це не важко або зовсім чуже, більшість людей кажуть, що SVN набагато простіше зрозуміти, ніж git, тому вам слід добре взнатись, лише прочитавши основні команди. Основний розділ Використання повинен отримати вас і працює без проблем.

Є дві основні відмінності:

  • фіксувати = натиснути на центральний репо Немає жодної бази даних або локальної комісії, а також тягне.
  • розгалуження відбувається за каталогом. Найкраще думати про все репо як структуру каталогів, розгалуження - це як створення симпосилання з семантикою копіювання на запис. Тоді як в git ви відгалужуєте все репо і перемикаєтесь між ними, щоб нова гілка «наклала» вашу робочу копію, за допомогою SVN ви можете поміняти шматки репо. Як правило, люди працюють на папці найвищого рівня (зазвичай її називають гілками), тому перемикання стає набагато більше схожим на стиль накладення роботи git.

Розгалуження тривіальне, злиття ніде не так вже й погане, як хочуть розібратися з апологетами DVCS, особливо якщо ви дотримуєтесь «стандартного» тріо папок вищого рівня (званих стовбуром, гілками та тегами).

Є декілька бітів, у яких SVN перемагає git, приходять в голову рідкі каталоги - де ви перевіряєте лише частину репо. Коли вам потрібно більше деталей, ви оновлюєте лише те, що вам потрібно. Якщо у вас є величезне репо (наприклад, основний продукт та багато плагінів), це чудово.

Є декілька бітів, які не такі гарні, як git, страшний конфлікт з дерева приходить до тями - де у вас конфлікт на рівні каталогів (тобто хтось видалив файл, який ви редагували)

Якщо у вас є Windows, використовуйте TortoiseSVN. Він головним чином гойдається.


Залежить. Злиття зі SVN стає поганим, коли файли переміщені (це по суті є освіченою формою видалення + додавання, керованою самим SVN) кимось І зміненим кимось іншим. Крім того, приємна відповідь.
JensG

1
Я згадав про проблему конфлікту з деревом ... Такий стан є проблемою для інших scms, хоча я розумію, що git використовує евристику, щоб визначити, чи переміщений файл той самий, він все одно може помилитися, якщо зміни суттєві ( наприклад, розділений файл на 2).
gbjbaanb

Git не потребує евристики для виявлення змін дерева - користувачеві потрібно перемістити файл git mv. SVN має svn move, але оскільки розгалуження та злиття у SVN є певним злом, я не вірю, що він може автоматично вирішити конфлікти між деревами, як це робить git ...
Idan Arye

3
@IdanArye git mvреалізовано як додавання + видалення. git використовує евристику, щоб визначити, чи відбулося переміщення чи копіювання під час фіксації (я думаю, що за замовчуванням є ", це 80% + файл той самий?")
Izkata,

3

Якщо можливо, використовуйте git svn. Я був у вашій ситуації і після півроку розчарування перейшов на git svn і з того часу був щасливий.

Git svn дозволяє локально використовувати сховище, а приєднання до SVN-сервера обробляється тим, git svn rebaseщо здійснює повторне базування локальних змін на магістралі субверсії, а потім git svn dcommitздійснює перезарядку комісій.

Можливо, це не оптимально для розширеного використання Subversion, але оскільки ви використовуєте git локально, все добре.

Під час використання git clone слід клонувати не кореневу папку субверсії, а безпосередньо ваш цільовий каталог (clone trunk). Це зробить git запуск набагато швидше, інакше ваша робоча копія може стати величезною.

Відмова : Я не знаю, як склалася ситуація, коли ви хочете створити філії Subversion і т. Д. Команди, з якими я працював, не використовували гілок (лише мені місцеві гілки git).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.