git для особистих проектів. Перевищення?


84

Я знаю і використовую дві системи управління версіями: Subversion і git. На сьогоднішній день Subversion звикає до особистих проектів, де я є єдиним розробником, і Git звикає до проектів з відкритим кодом та проектів, де я вірю, що інші також працюватимуть над проектом. Це, головним чином, завдяки дивовижним можливостям розгортання та злиття git, де кожен може працювати на своїй гілці; дуже зручно.

Зараз я використовую Subversion для особистих проектів, тому що я думаю, що Git там мало сенсу. Здається, це трохи непосильне. Для мене це нормально, якщо він є централізованим (зазвичай, на домашньому сервері), коли я єдиний розробник; Я все-таки беру регулярні резервні копії. Мені не потрібно вміння робити власну гілку, головна гілка - моя гілка. Так, SVN має просту підтримку розгалуження, але набагато більш потужна підтримка для цього не має сенсу. Злиття може бути болем з цим, або, принаймні, з мого невеликого досвіду.

Чи є для мене якась вагома причина використовувати git в особистих проектах, чи це просто просто зайвий рівень?


61
Ні, я використовую git і hg для особистих проектів. Місцевий контроль за ревізією - знахідка.
wkl

7
Git багато в чому кращий для всіх проектів, чи є вони великою кількістю учасників, чи ні: git стискає речі набагато ефективніше, ніж svn (і на порядок швидше!), Git робить резервні копії тривіальними, а git не стане бути перешкодою, якщо хтось інший хоче внести свій внесок.
Артефакт2,

4
Я використовую контроль версій, щоб підштовхнути свій код або до github, або до бітбукета, він працює як резервне копіювання для мене, і, можливо, коли-небудь я напишу щось, що нас справді зацікавить.
Махмуд Хоссам,

8
"Мені не потрібна можливість робити власну гілку, головна гілка - моя гілка". Дуже багато людей говорили те саме, undoколи це була відносно нова функція в додатках. Тепер усі розуміють, що їм це все було потрібно. Вам потрібно відділитись, ви просто цього не знаєте.
Dan Rosenstark

1
@rtperson Так, ти можеш це зробити, але мені насправді подобається меркурій більше, хоча мені більше подобається github, ніж бітбукет.
Махмуд Хоссам

Відповіді:


155

Це не зайве. Основна причина, чому я почав використовувати Git і Mercurial over Subversion для особистих проектів, полягає в тому, що ініціювати сховище набагато простіше.

Хочете розпочати новий проект?

> git init

БАМ! Не потрібно налаштовувати сервер сховища, ані перевіряти структуру папок для підтримки розгалуження та тегів у сховищі субверсії.

Спільний доступ до вашого проекту пізніше - це лише питання: git push(крім того, щоб мати віддалене сховище). Спробуйте це зробити швидко з підривом!


24
Прийнято. Я не міг бути неправдивішим у тому, що git є надмірним, ніж це;)
Анто

7
Steve341: Я зазвичай зберігаю всі проекти вихідного коду у папці з назвою "Проекти". Тут я зберігаю всі сховища, по одному для кожного проекту вихідного коду. Мені ніколи не було необхідності разом відслідковувати кілька проектів в одному і тому ж сховищі VCS; ось для чого призначені системи управління залежностями, такі як Ivy або Maven.
Спойк

3
@ Steve341 Як важко відстежувати цей матеріал? У вас просто одна папка, яка містить усі ваші репости. Це не відрізняється від вашої системи, окрім того, що ваша система є надзвичайно поганою практикою при використанні git ...
альтернатива

2
@ Steve314:echo 'for dir in projects/*; do cd "$dir"; git push; cd ..; done' > update_all; chmod +x update_all
André Paramés

2
git initі бам! О так і тоді cp ../the-other-project/.gitignore .перед початковим зобов’язанням. Бам!
Dan Rosenstark

46

Я заперечую, що використання Subversion для місцевих особистих проектів є надмірним, тоді як Git, безумовно, ні. Git займе менше місця (через неефективну концепцію "ревізії" SVN порівняно з знімками об'єктів Git), вимагає менших налаштувань ( git initпроти десятка svnadminкоманд та налаштування дозволів тощо), резервні копії простіше ( git clone --bare[або git push originякщо ви використовуєте Github або подібне], і ви готові), і має кращі інструменти для керування кодом (розгалуження безкоштовне, а злиття простіше і чіткіше). Тільки тому, що ніхто більше не має клона вашого сховища, не означає, що переваги будь-яких DVCS є "надмірними".

Крім того, я б сказав, що підтримка розгалуження Git менш складна, ніж SVN, з більшими винагородами.


Я здогадуюсь, я мав би використати "потужний" замість "складний"
Анто Кр

3
@Anto: Не має значення. Я б все-таки сказав одне і те ж: У вищого розгалуження Git просто немає недоліків, порівняно з SVN.
greyfade

3
Також Git не "забруднить" ваше вихідне дерево файлами відстеження у кожному підкаталозі.
WarrenT

4
@WarrenT "забруднення" вихідного дерева не відбувається у svn версіях 1.7 та пізніших версіях.
pllee

4
Створення сховища файлової системи в Subversion - це одна команда ( svnadmin createплюс одна, щоб зробити початкову перевірку чи імпорт), не потрібно встановлювати дозволи та інше. Я не заперечую, що часто Git є кращим інструментом, але неточності щодо Subversion не є корисними.
Джош Келлі

34

Думати, що ти ніколи не розгалужуєш свій власний код, трохи короткозоро. Я кілька разів розгалужував власний код, особливо коли я експериментував з новим підходом, в якому я ще не був повністю переконаний. Ви з часом захочете функцію.

Це походить від давнього користувача Subversion. Консолідація за одним інструментом справді може полегшити ваше життя.


2
Так, я вважаю, що це справа гілок, експериментів. Це було моє перше застереження, коли я читав запитання Опа. Якщо ви не розгалужуєтесь у своєму сховищі, ви «розгалужуєтесь» у голові, і це просто безглуздо, коли у вас є контроль над версіями.
Кріс

3
Ви можете розгалужуватися за допомогою підривної роботи. І зливаються. Різновид. Насправді, єдиний раз, коли я спробував, я опинився в корумпованому сховищі, з яким я більше не міг працювати, і відновлення з резервної копії (з уже застосованою гілкою) не допомогло, тому я втратив всю свою історію і запуск нового сховища ... але я звинувачував це в переході від 1.4.? до 1,5 (я думаю - це було кілька років тому). Напевно, справді розгалуження та об'єднання робіт. Якщо ви досить сміливі, спробуйте. Якби я тоді знав про скидання svn, я, звичайно, міг би вирішити проблему.
Steve314

@Chris, мені подобається мати робочу версію, до якої можна повернутися в будь-який час. Звичайно, ви можете це зробити за допомогою тегів, але бувають випадки, коли галузь має ідеальний сенс. Не забувайте і про інші переваги git / mercurial.
Berin Loritsch

9

Перевищення зарезервовано для випадків, коли є побічний збиток, спричинений "рішенням". Використання пістолета для вбивання мухи означає, що шкода, спричинена кулею, перебуває в іншому місці. Це надмірно. Використання чогось більш потужного, ніж необхідного, що не спричиняє проблеми, не є надмірним, і це може бути хорошою справою, якщо це допоможе вам впорядкувати процес розробки. Це не завдає шкоди і дозволяє вам лише оновити один набір програмного забезпечення замість двох. То навіщо турбуватися двома системами замість однієї?


Це може бути непосильним (так, з таким визначенням), якщо система вам заважає. Мені цікаво, чи добре використовувати git для особистих проектів. Скажіть, будь ласка, які конкретні переваги? Ця відповідь не відповідає на це. Я розглядаю git як більш потужну систему, і занадто потужну для особистих проектів. У цьому не повинно бути жодної шкоди, доки це не стане вам на шляху. Не могли б ви розширити свою відповідь?
Анто

1
Overkill також застосовується, коли зусилля, застосовані для нанесення розчину, є непропорційними. Можливо, якщо ви вже використовуєте підрив для місцевих проектів, зусилля, необхідні для вивчення Git або будь-якого іншого, є надмірним. Або, можливо, корисний урок розвитку навичок передачі, звичайно. Особисто я все ще використовую підрив - це мене кілька разів покусало, але залишилися лише незначні шрами. Мені цікаво вивчити Git, але кожного разу, коли я заходив шукати, підручники, які я знайшов, були криптовалютними, або я не міг отримати стабільні інструменти для Windows, або був якийсь інший блокпост, який зробив це, здається, непосильним.
Steve314

7

Я використовую Git для моїх одноосібних проектів і мені це подобається. Раніше я використовував Subversion, і я ще не бачив недоліків використання Git. Це більш потужне, але не таким чином, що ускладнює прості речі. Створення простих речей надмірно складних / дорогих / повільних / тощо. IMHO є необхідною умовою для виклику чогось overkill. Крім того, на Github я замовив раніше проекти інших людей, щоб додати потрібну функцію, а потім надіслав їм запити на те, щоб надіслати їх. Мені було б здорово, якби хтось, хто зацікавився моїми проектами, зробив те саме.


7

Я ніколи не використовував управління джерелами в особистих проектах перед DVCS, тому дивно уявити, що хтось займає протилежну точку зору. Деякі мої причини:

  • Легко налаштувати та руйнувати. Наприклад, минулого тижня колега подарував мені головоломку з програмування, яку я вирішив у кілька невеликих кроків. Я зробив git repo, який тривав усі 45 хвилин, щоб утримати свою роботу, а потім його вже не було. Я не знаю, як легко щось подібне знаходиться в підриві, але я ніколи не чув, щоб хтось це робив.
  • Відключено. Для мене можливість працювати в режимі офлайн - це більше користь для хобі-проекту, ніж робота для роботи. Мені не потрібно пробивати дірку в домашньому брандмауері чи публічно розміщувати проект. Я можу тимчасово поставити РЕПО на привід великого пальця або ноутбук і все одно тримати все синхронізовано.
  • Все колоковано. Спільне використання репо та робочого дерева полегшує невеликі проекти, які слід відстежувати під час таких речей, як оновлення ОС.
  • Потужні функції. Звичайно, мені не потрібна сила постійно, але вона є там, коли мені це потрібно, і не споживає ніяких ресурсів, коли я цього не потребую.

6

Мені сказали, що git-bisectдуже приємно знаходити точну фіксацію, яка запровадила певну поведінку, переміщуючись туди-сюди в комітетах залежно від вашого вкладу.

Ви будете мати , щоб зробити що - небудь для речей , які ви просто не можете зрозуміти, що трапилося.


РЕДАКТУВАННЯ. Крім того, здатність до розгалуження дуже важлива, коли вам доведеться робити виправлення у старих версіях, якими користуються клієнти. Ви повинні вміти керувати "просто виправити цю крихітну річ, але я не хочу найновішої версії, тому що я не хочу перевіряти її знову".


2

Це залежить від того, наскільки серйозно ви хочете зайнятися версією власного коду. Якщо ви будуєте, наприклад, просту бібліотеку, яка буде мати коли-небудь поточну версію (або настільки довго, наскільки це правда), я особисто використовую базовий варіант резервного копіювання, такий як Dropbox. Якщо ви втратите весь код, можете відновити його з Інтернету, а у Dropbox є резервна копія версії 30 днів, якщо ви дійсно зробите щось дурне.

Однак якщо вам, наприклад, потрібно підтримувати відділення Production і Dev, то git - це абсолютно чудовий інструмент - і чортівка набагато швидше, ніж svn. Пам’ятайте про ризик виходу з ладу жорсткого диска, якщо дані зберігаєте лише локально.


1
Так, я використовую DropBox для особистих проектів. Версія ніде не є такою складною, як справжня VCS, але це чудово для менших проектів, які я роблю у вільний час, і вона зовсім не вимагає уваги (наприклад, жодних комісій, файли просто оновлюються під час роботи над ними)
jhocking

о, і до речі, тому що я розробляю ігри, мої проекти, як правило, мають багато двійкових файлів (файли зображень, аудіокліпи тощо), і більшість систем управління версіями дійсно призначені лише для вихідного коду.
поштовх

Git працює чудово з двійковими файлами, розрізнення - менш цікавими. На щастя, відмінність у git не зовсім заблокована - якщо ви знайдете улюблений бінарний інструмент diff, який ви любите, ви можете використовувати його з git досить легко (з командного рядка)
Chris Moschini

Мені сказали, що Git витрачає багато місця на версію бінарних файлів, але те, що мені сказали, може бути невірним. В основному, мені сказали, що більшість бінарних активів (я вважаю, що не всі бінарні файли, але зображення та звуки, що надходять у гру) повинні бути відновлені повністю в кожній версії, і тому Git заповнює ваш жорсткий диск локальним сховищем.
поштовх

Це марно, лише якщо ви не хотіли версії двійкових файлів. Якщо вам потрібно їх версії, то історія версій не марно. Я думаю, що вони випадково мають на увазі, що git bloats історію його версій під час відстеження бінарних файлів - це неправильно. git.wiki.kernel.org/index.php/GitSvnComparsion
Кріс

2

Я завжди, завжди, завжди використовував систему контролю версій для будь- якого проекту розробки. Великий чи малий насправді не має значення. Незалежно від того, граю я вдома з якоюсь новою технологією, пишу трохи помічника, щоб полегшити своє життя, або професійно розвиваюся у великій та розподіленій команді - я завжди хотів би, щоб система контролю версій підтримала мене.

Звичайно, більшу частину часу для невеликих особистих проектів ви не будете використовувати більшість функцій, але налаштування сховища git (або навіть локального сховища Subversion) не є великою справою, тому займіться цим! І перш ніж це знати, ви захочете знати "чорт забирай, який був вміст файлу X минулої п’ятниці?". Без контролю версій - удачі ;-)

Отже, це не має значення, використовуєте ви git або SVN - особисто я починаю мігрувати все більше матеріалів із SVN в git, але головне - взагалі використовувати контроль версій - навіть для дрібниць.


1

Тільки тому, що про це ніхто не згадував: для особистих проектів Darcs справді хороший і менш задіяний, ніж git для прямого контролю версій. Це не так швидко для більших проектів, але тоді, і це не Subversion!


1
Це звучить якось пов’язано з тим, наскільки добре ви знаєте дарків. Я ніколи його не використовував, але багато використовував git. Для мене git дуже прямий вперед, але я думаю, що я б почухав голову, якби я використовував дарки.
Сем

1
Якщо ви вже освоїли божевільний інтерфейс git, darcs - це торт-прогулянка.
wlangstroth

1
Ви можете, будь ласка, пояснити, чому Darcs краще для малих проектів, ніж git?
shabunc

0

Це може бути потужним змістом ментальної парадигми, щоб зрозуміти, що ми робимо експерименти. Наявність дешевого / простого інструменту для підтримки цього, покращує вашу здатність рухатися вперед, частково тому, що це підвищує вашу здатність відмовлятися від будь-якого експерименту, коли він виявляється поганим.

Багато розробників кажуть: "Я просто роблю копії коду". Але цими копіями стає важко керувати і в кінцевому підсумку стає неспокійним. У вас є кілька копій і не можете запам'ятати, яка копія для чого, а потім спробуйте розібратися, коли їх безпечно видалити.

Все це стає ще більш цінним, коли експеримент тягне за собою скоординовані зміни в декількох файлах. А коли це сольний pfoject за допомогою Git стає ще простішим.

Замість того, щоб замислюватися над тим, чи варто мені використовувати його в сольному проекті, я зараз думаю, яка ганьба я не виявив цього раніше.


Щоб переглянути погляди дизайнера на це, дивіться Linus на Git на YouTube (~ 70 хв.)
WarrenT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.