Огляд голих кісток
git instaweb --httpd=webrick
з книги git scm
комбінуйте це з чимось на зразок описаного тут підходу для розподіленої розробки (кредит для datagrok для добре описаної концепції)
Запустіть одноразовий git-сервер із будь-якого локального сховища.
Я це вже написав, але думав, що це може використати деяке розширення:
Увімкнути децентралізований робочий процес git: git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-paths .git /"
Скажімо, ви використовуєте git робочий процес, який передбачає роботу з основним "офіційним" сховищем, яке ви перетягуєте та висуваєте із змін і в них. Я впевнений, що багато компаній роблять це, як і багато користувачів таких служб хостингу, як Github.
Скажіть, що сервер чи Github трохи знижується.
Не хвилюйтесь, адже одна з причин використання git полягає в тому, що у вас є копія всієї історії проекту у вашому локальному клоні.
Ви можете продовжувати кодувати та виконувати записи, поки ви будете чекати, поки команда операцій поверне сервер до життя. Примітка для себе: купуйте пончики для операційної групи.
Але що робити, якщо під час цього простою ви хочете співпрацювати з іншою людиною, яка може не бути експертом з git, у тому ж сховищі?
Або замість простою, що робити, якщо ви та ваш колега в полі, і чомусь ви не можете отримати VPN, щоб дозволити вам підключитися до офіційного репо?
Або що робити, якщо ви та ваш співавтор випробовуєте купу експериментальних змін, і, хоча у вас є доступ, ви не хочете штовхати свою незакінчену безладу в офіційний центральний сховище? (Навіть не як функції гілок.) Можливо, ви в середині очищення катастрофічної бази або злиття, і гілки всюди.
Що ж, git, як ви, напевно, знаєте, - це "розподілена" система управління версіями .
Незважаючи на те, що ви можете використовувати центральне "офіційне" сховище git у своєму робочому процесі, ви все одно маєте можливість використовувати git у режимі однорангових, коли ви та ваш колега просто будуєте та ділитесь комунікаціями між собою та центральним Сервер ніколи навіть не повинен знати.
Отже, як ви отримуєте свої гілки та зобов’язуєтесь над ними, чи навпаки?
- Ви можете використовувати засоби git для патчів електронної пошти. Але це трохи не елегантно і вимагає певних знань щодо їх застосування, як застосовувати патчі електронної пошти.
- Ви можете створити обліковий запис на власній машині, щоб ваш колега впадав в службу. Але, можливо, у вас немає локального кореневого доступу, або, можливо, ви не довіряєте їм доступ SSH до вашої скриньки.
- Ви можете клонувати репо на перемикач і передавати його туди-сюди. Але це досить нудно, особливо якщо ви трапляєтеся в тій же локальній мережі, і вам потрібен палець.
Напевно, можна придумати й інші методи. Але є дуже простий спосіб: якщо ви бачите один одного в мережі, ви можете запустити одноразовий сервер git, який вони можуть використовувати як віддалений для клонування, отримання та витягування змін, і вбивати їх, коли ви зроблено з ним.
Інструмент, який це дозволяє git daemon
, є безліччю варіантів та функціональних можливостей, але для того, щоб зробити це легким одноразовим "просто обслуговуючи репо, в якому я перебуваю", спосіб його використання - створити псевдонім. Мені подобається це називати git serve
. Виконати:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
Використання псевдоніму насправді має вирішальне значення, оскільки псевдоніми git виконуються в базовому каталозі вашого робочого дерева. Тож шлях '.git' завжди вказуватиме на потрібне місце, незалежно від того, де ви знаходитесь у дереві каталогів вашого сховища.
Використовуйте нове git serve
так:
- Біжи
git serve
. "Готовий до гуркоту", він повідомить. Гіт - погана дупа.
- Дізнайтеся свою IP-адресу. Скажімо, це 192.168.1.123.
- Скажіть: "Ей Джейн, я не готова / здатна підштовхнути ці зобов'язання до початку, але ви можете запустити мої зобов'язання у ваш клон, запустивши
git fetch git://192.168.1.123/
"
- Натисніть ctrl + c, коли ви більше не хочете подавати цю репону.
Ви також можете сказати Джейн, git clone git://192.168.1.123/ local-repo-name
якщо вона ще не має клона сховища. Або скористайтеся git pull git://192.168.1.123/ branchname
для того, щоб зробити витяг та злиття одразу, корисно, якщо ви працюєте разом у відділенні функції.
Однак зауважте, що ви не повинні робити цього у ворожих мережах, якщо ви зберігаєте секрети у своєму сховищі, оскільки немає автентифікації. Це не рекламує його існування, але кожен, хто має сканер портів aa, може знайти його, підключити до нього і клонувати репо.
Але це не надто небезпечно, оскільки воно використовується лише для читання за замовчуванням. Уважно прочитайте сторінку git daemon
чоловіка, якщо ви думаєте, що хочете включити доступ для запису. У випадку, коли ви хочете отримати зобов’язання свого співавтора, набагато безпечніше залишити його лише для читання, і попросіть співпрацівника також виконати цю команду, щоб ви могли витягнути з них.
Дотично пов'язане: на предмет одноразових серверів, якщо ви хочете тимчасово ділити купу статичних файлів через HTTP: python -m SimpleHTTPServer