Сайт | Скачать | Видео | Wiki

Автор Тема: Разработка на Git  (Прочитано 33453 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Разработка на Git
« : 05 Январь 2014, 19:36:17 »
В связи с перспективой коллективной работы (с Командой MagOS) предлагаю в этой теме делиться опытом работы с Git.

Пакет Git для PuppyRus выложен здесь: http://forum.puppyrus.org/index.php/topic,14297.msg85826.html#msg85826

Книга по Git (спасибо neobht за ссылку): http://git-scm.com/book/ru

Оффлайн rodin.s

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1179
  • Репутация: +96/-0
Re:Разработка на Git
« Ответ #1 : 05 Январь 2014, 22:54:54 »
Сейчас также пытаюсь разобраться с git и с github. Нужно для работы над woof-CE. Уже сделал несколько коммитов. Как раз также читаю эту книгу.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Разработка на Git
« Ответ #2 : 21 Январь 2014, 12:27:31 »
После внимательного прочтения большей части книги про Git у меня сложилась такая картина.

Первое, что нужно сделать для начала работы с GitHub - сгенерировать ключи SSH (команда 'ssh-keygen').
Публичный ключ затем нужно внести в настройки аккаунта на GitHub'е.
Добавлю что у меня так сразу не заработало, пришлось ещё создать файл '~/.ssh/config' с таким содержанием:
Код
Host github.com
Hostname github.com
User My_Login
IdentityFile ~/.ssh/id_rsa
Проверить работоспособность на этом этапе можно командой 'ssh -T git@github.com'. Если напишет "Permission denied (publickey)" - значит что-то не так и надо разбираться.

Следующий шаг - клонирование репозитория.
Команда 'git clone git://github.com/nameproject' не подойдёт, т.к. после неё отправить сделанные изменения на сервер не получится.
Нужно склонировать репозиторий по ssh, я это сделал командой 'git clone ssh://git@github.com/nameproject'.

Затем нужно перейти в только что созданный каталог '~/nameproject' и выполнить команду 'git init'.

После этого можно править файлы проекта (они лежат в '~/nameproject').

Когда правки завершены, нужно их проиндексировать, проще всего это сделать одной командой 'git add *'.

Теперь нужно создать коммит вызовом команды 'git commit -m "text"' (где text - краткое описание изменений).
Каждый коммит является точкой, к которой любой разработчик потом может откатиться.


Внимание! Всё, что было сделано до этого момента - делалось исключительно на локальной машине, никакие изменения на сервер не передавались.
Чтобы загрузить изменённые файлы на сервер нужно выполнить команду 'git push'.


Ну вот и всё. Более подробная информация изложена в книге Pro Git (ссылка в шапке темы).
Если я что-то не правильно понял - прошу более опытных пользователей Git'а указать мне на ошибки.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Разработка на Git
« Ответ #3 : 21 Январь 2014, 16:51:58 »
Pro Git это для меня как песня звучит. :)))

Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:Разработка на Git
« Ответ #4 : 21 Январь 2014, 19:14:25 »
После клонирования не надо делать git init.
При клонировании и последующих пушах можно использовать https url с авторизацией и тогда не нужно проводить процедуру с ключами.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Разработка на Git
« Ответ #5 : 22 Январь 2014, 10:51:23 »
Проясните новичку гит идею. Коммиты сразу автодобавляются или есть кто-то кто принимает решение добавить\отклонить?
Почитать самому пока некогда и нет уверенности что надо
« Последнее редактирование: 22 Январь 2014, 10:52:56 от sfs »

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:Разработка на Git
« Ответ #6 : 22 Январь 2014, 14:20:46 »
Сразу добавляются или нет - решается выбором схемы работы. Можно и так и так.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Разработка на Git
« Ответ #7 : 23 Январь 2014, 21:32:45 »
Конкретику про PFS-utils давайте обсуждать в соответствующей теме:
http://forum.puppyrus.org/index.php/topic,15208.0.html
(Часть сообщений переместил туда).

После клонирования не надо делать git init.
Точно не надо? У меня что-то не заработало без git init...

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:Разработка на Git
« Ответ #8 : 24 Январь 2014, 15:35:00 »
Да. Точно.
Инициализацию надо делать когда версионности еще не было, например новый проект.
В случае клонирования уже существующего проекта это не требуется.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Разработка на Git
« Ответ #9 : 29 Январь 2014, 09:28:52 »
Раз Вы уже разобрались - нельзя ли написать пару скриптов - слить \ залить для тех кто не хочет глубоко вникать в git

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Разработка на Git
« Ответ #10 : 30 Январь 2014, 09:54:48 »
Раз Вы уже разобрались - нельзя ли написать пару скриптов - слить \ залить для тех кто не хочет глубоко вникать в git
Скрипт "слить с GitHub и собрать пакет" планируется.
Что касается заливки - думаю не надо. Всё же дело ответственное, надо понимать какая команда что делает, хотя бы в общих чертах.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Разработка на Git
« Ответ #11 : 30 Январь 2014, 10:49:29 »
Как скачать и так понятно. Только вопрос, который меня терзал с самого начала гит затеи. Чем это лучше форумной разработки?
Если бы там по 30 заливов в день было от 30 разрабов - тогда да
Даже если так - если все автопринимать тогда - да, но будет бардак
Если 1 человек принимает - зачем гит. Выкладывай на форум, как раньше

Затея с redmine провалилась. Профессиональные средства - для проф. разрабов. У нас все любители
Сами эти системы разрабатывать за нас не будут. Получается какое-то надувание щек и ненужное усложнение...
Только у меня такое впечатление?

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Разработка на Git
« Ответ #12 : 02 Февраль 2014, 22:57:12 »
Команда MagOS давно использует Git, команда небольшая, и работа у них (как я понял) идёт эффективно.

Начальный "импульс" в направлении перехода разработки PFS-utils на Git был от neobht.
У меня были подобные мысли, но останавливало полное отсутствие опыта работы с подобными средствами.

Преимущества Git, которые я для себя выделил - автоматическая публикация актуальной версии, архивация всех состояний (можно откатить всё к любой версии).
Кроме того, как я понимаю, разработчики могут вести свои "ветки", вносить туда изменения, тестировать и т.д. А потом, когда код для конкретной задачи доделан, эти ветки можно "слить" в основную.
Но это, я думаю, neobht объяснит лучше.

Redmine - другой случай, это была исключительно альтернатива форуму. А в Git главное - совместная работа с исходниками (обсуждения в Git-е у нас не планируются).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Разработка на Git
« Ответ #13 : 03 Февраль 2014, 09:18:00 »
То что гит - мощное средство коллективной работы - никто не спорит.
Но работы то нет
Сейчас получается, чтобы к ней подключиться появилось еще одно препятствие

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:Разработка на Git
« Ответ #14 : 03 Февраль 2014, 15:22:18 »
Вообще на гитхабе есть такой функционал, как pull request. Это механизм, когда разработчики подают некий аналог запроса на добавление их кода в ветки проекта. Наверное это удобно, когда разработчики независимы и любой может такой запрос отправить даже не зная друг друга. Мы у себя этот механизм не используем, тк. нас немного.

У нас устоялась такая схема работы:
В основную ветку (master) вносит изменения основной разработчик. Все остальные могут это делать исключительно в косметических целях, когда гарантированно код не меняет функционал. Это редко происходит. В основном разработчики ведут свои ветки (branch) и синхронизируют их с основной веткой при релизе. После чего вносятся изменения и рабочую ветку с добавленным функционалом при подготовке следующей версии основной разработчик сливает в основную ветку проекта и выходит новая версия.

В данном случае с pfs-utils такая схема тоже хорошо подходит. То есть ограничения на добавление в основную ветку для простоты отсутствуют и осуществляются административно-организационно.
« Последнее редактирование: 03 Февраль 2014, 15:23:54 от neobht »