PDA

Просмотр полной версии : [Вопрос] GIT



kushichka
26.06.2016, 15:50
Есть ли смысл пользоваться GIT'ом при разработке сервера одним человеком, или же это лишнее?

L0ndl3m
26.06.2016, 15:52
Если вы не собираетесь выкладывать свою разработку в интернет, то git не нужен.

$continue$
26.06.2016, 16:14
Громко, однако. Есть такая штука, как закрытый репозиторий. (на GitLab - оно бесплатно. На GitHub - платно). Так вот там можно туда делать бэкапы, кроме того если, то то пойдет не так можно откатить изменение. Git - довольно полезная вещь, но если знать как пользоваться.

Если вы не собираетесь выкладывать свою разработку в интернет, то git не нужен.

Daniel_Cortez
26.06.2016, 16:17
Есть ли смысл пользоваться GIT'ом при разработке сервера одним человеком, или же это лишнее?
Во-первых, Git - не аббревиатура.
Во-вторых, это вы же собираетесь "разрабатывать сервер", вам и решать, нужен он вам или нет. Вообще в сети есть куча уроков о том, что такое Git и для чего им пользуются - погуглите.

Disinterpreter
26.06.2016, 17:15
Есть ли смысл пользоваться GIT'ом при разработке сервера одним человеком, или же это лишнее?

Не лишнее. Закончил работать - сделал коммит. Проблемы в каком либо коммите - откатился. Нужно поэксперементировать над кодом - сделал ветку, закоммитил туда, если работает смержил в основную.

kushichka
26.06.2016, 19:36
Во-первых, Git - не аббревиатура.
Во-вторых, это вы же собираетесь "разрабатывать сервер", вам и решать, нужен он вам или нет. Вообще в сети есть куча уроков о том, что такое Git и для чего им пользуются - погуглите.

Я в курсе что такое git, недавно занялся его изучением. Мне просто интересно использует ли кто-то его в сампе.

- - - Добавлено - - -


Не лишнее. Закончил работать - сделал коммит. Проблемы в каком либо коммите - откатился. Нужно поэксперементировать над кодом - сделал ветку, закоммитил туда, если работает смержил в основную.

Я еще не до конца понял всех тонкостей мержа, но т.к. в сампе все манипуляции идут, в основном, в одном файле, то наверное будет куча конфликтов..

- - - Добавлено - - -


Громко, однако. Есть такая штука, как закрытый репозиторий. (на GitLab - оно бесплатно. На GitHub - платно). Так вот там можно туда делать бэкапы, кроме того если, то то пойдет не так можно откатить изменение. Git - довольно полезная вещь, но если знать как пользоваться.

Я слышал только о GitHub и Bitbucket, думаю пользоваться последним из-за бесплатного приватного репозитория.

L0ndl3m
26.06.2016, 19:40
Громко, однако.
К чему это вообще?

$continue$
26.06.2016, 20:08
Не. В SA-MP комьюнити не продвинуто. Лучше залить на какой хостинг с рекламой и просмотром порно-фильмов.

Мне просто интересно использует ли кто-то его в сампе.

kushichka
26.06.2016, 20:26
Не. В SA-MP комьюнити не продвинуто. Лучше залить на какой хостинг с рекламой и просмотром порно-фильмов.

Я такто не собираюсь его выкладывать публично, пока я собираюсь делать его для себя. Но вот, не помню в какой теме, увидел что было бы не плохо использовать git и сайты, связанные с ним.

TheMallard
26.06.2016, 20:33
Я использую в своей работе Bitbucket и клиент SourceTree. Очень удобно использовать git, у меня есть ПК и ноутбук, и если я уеду к бабушке, то с ноутбука смогу продолжать работу.

ziggi
26.06.2016, 21:20
Я активно использую Git и GitHub для разработки, вот пример репозитория: https://github.com/Open-GTO/Open-GTO
Там две ветки, одна - master, в которой разрабатывается последняя версия и вторая - v1.1, в которой поддерживается стабильная. То есть Git мне позволяет выпускать исправления для старой версии, параллельно разрабатывая новую. Плюс к этому, я могу вернуться в любую точку в прошлом, с момента начала использования CVS (изначально я использовал SVN), могу вернуться в 2010 (https://github.com/Open-GTO/Open-GTO/commits/master?page=45) и посмотреть то, как всё выглядело в то время (https://github.com/Open-GTO/Open-GTO/tree/c10bbc832465e96ad1f8f377dd7fc9678e0671d0). Удобств масса, нужно лишь немного изучить Git.

Проблем со слиянием при написании всего проекта в один файл быть не должно, у Git очень умная система слияний. Но посмотреть свой файлик через web-интефрейс одного из хостинга исходных кодов вряд ли получится, обычно размеры ограничены.

Для приватных репозиториев используй Bitbucket или GitLab, там они бесплатны (по крайней мере некоторое количество).

На счёт Git клиентов. При разработке я обычно использую обычный git, то есть работаю через терминальную сессию, но я использую ОС на базе Linux, а на них очень много удобных терминалов. А вот для Windows их не завезли, приходится страдать. Хотя для простых задач (создание коммита) достаточно простенького GitHub Desktop, но это очень ограниченный клиент и кроме коммитов он ничего не умеет. Поэтому я советую использовать Git через PowerShell, но, если на текстовый интерфейс аллергия, то можно попробовать что-то вроде TortoiseGit, я её не видел, но их SVN клиент был хорошим.

Советую прочитать эту статью (https://habrahabr.ru/post/106912/), в ней описано то, как следует организовывать свой репозиторий и работать с ним. Я не следую этой модели из-за лени, но к этому определённо нужно стремиться.

Desulaid
26.06.2016, 22:17
На счёт Git клиентов. При разработке я обычно использую обычный git, то есть работаю через терминальную сессию, но я использую ОС на базе Linux, а на них очень много удобных терминалов. А вот для Windows их не завезли, приходится страдать.

Воот https://git-scm.com/downloads ))

ziggi
26.06.2016, 22:34
Воот https://git-scm.com/downloads ))

Что? Терминалов для Windows там нет.

Disinterpreter
26.06.2016, 22:56
т.к. в сампе все манипуляции идут, в основном, в одном файле, то наверное будет куча конфликтов..


Ложь и клевета, Ziggi удается поддерживать нормальную структуру кода.

Desulaid
27.06.2016, 00:28
Что? Терминалов для Windows там нет.

Но есть клиент. Хотя я не так шарю во всем этом. Но пользоваться можно :blush:

ziggi
27.06.2016, 00:37
Но есть клиент. Хотя я не так шарю во всем этом. Но пользоваться можно :blush:

Ну про клиенты я написал в следующем предложении.




т.к. в сампе все манипуляции идут, в основном, в одном файле, то наверное будет куча конфликтов..
Ложь и клевета, Ziggi удается поддерживать нормальную структуру кода.


Но я не пишу в одном файле. Опасения человека понятны и, возможно, какие-то проблемы могут возникнуть, но это маловероятно. Тем более, если он будет вести разработку в одиночку, то можно легко обойтись без сливания кода.

Disinterpreter
27.06.2016, 00:59
Но я не пишу в одном файле. Опасения человека понятны и, возможно, какие-то проблемы могут возникнуть, но это маловероятно. Тем более, если он будет вести разработку в одиночку, то можно легко обойтись без сливания кода.

Ну я и говорю, у тебя выходит отличная структура кода. Зачем писать в одном файле?

ziggi
27.06.2016, 01:13
Зачем писать в одном файле?

Не знаю, но вопрос у kushichka был не в этом, да и тема не об этом.

kushichka
27.06.2016, 17:54
Но я не пишу в одном файле
как можно мод писать не в одном файле? Некоторые системы в инклуды/FS помещать?

Тем более, если он будет вести разработку в одиночку, то можно легко обойтись без сливания кода.
Как предлагалось выше, можно при разработке использовать отдельную ветку, а после удачного теста мержить в основную, то есть слияние будет происходить.

ziggi
28.06.2016, 04:28
как можно мод писать не в одном файле? Некоторые системы в инклуды/FS помещать?

Да, в инклуды.

kushichka
28.06.2016, 05:43
Да, в инклуды.

А есть ли в этом смысл?

ziggi
28.06.2016, 15:39
А есть ли в этом смысл?

А почему его может не быть? Одна система - один файл, разве это не логично? А вот пихание всего в один файл лишено какого-либо смысла, это значительно усложняет разработку.

kushichka
28.06.2016, 16:04
А почему его может не быть? Одна система - один файл, разве это не логично? А вот пихание всего в один файл лишено какого-либо смысла, это значительно усложняет разработку.

А как между всеми файлами связать массивы, переменные? Кажется только PVar'ы можно объявить в одном файле, а использовать в других...
Как быть когда нужно в каждой системе использовать, к примеру, паблик OnDialogResponse? Прописывать его в каждом инклуде? Хотелось бы пример реализации увидеть, если это возможно.

ziggi
28.06.2016, 20:14
А как между всеми файлами связать массивы, переменные? Кажется только PVar'ы можно объявить в одном файле, а использовать в других...
Как быть когда нужно в каждой системе использовать, к примеру, паблик OnDialogResponse? Прописывать его в каждом инклуде? Хотелось бы пример реализации увидеть, если это возможно.

При создании переменной с помощью new, её область видимости становится глобальной и эта переменная доступна из любых, ниже подключенных, файлов. Но обращение к переменным напрямую - это дурной тон, люди, как правило, создают несколько функций - интерфейсов, для работы с этими переменными. Например, вместо чего-то вроде: gPlayerInfo[playerid][e_pLevel] = 5, ты используешь SetPlayerLevel(playerid, 5).

Использование OnDialogResponse или других автовызываемых функций обычно заключается в использовании метода ALS (http://forum.sa-mp.com/showthread.php?t=574534). Ещё можно использовать y_hooks из YSI.

Или, если подобный подход не нравится, можно вызывать подфункции в основной OnDialogResponse.
Примерно так:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (Bar_OnDialogResponse(playerid, dialogid, response, listitem, inputtext)) {
return 1;
}
if (Tuning_OnDialogResponse(playerid, dialogid, response, listitem, inputtext)) {
return 1;
}
return 1;
}
Где функции Bar_OnDialogResponse и Tuning_OnDialogResponse могут находиться где угодно.

Для примера могу дать свою систему соревнований (ещё не доделана), в которой данные моменты реализованы: https://github.com/Open-GTO/Open-GTO/tree/master/sources/competition
В основном файле, competition.pwn, есть массив gParams, этот массив имеет область видимости исключительно в этом файле, но доступ к параметрам есть откуда угодно. Достигается это с помощью реализации функции Competition_SetParamInt, Competition_GetParamInt и им подобными (Float, String). Например здесь (https://github.com/Open-GTO/Open-GTO/blob/master/sources/competition/competition_menu.pwn#L87) я получаю ID карты для формирования диалога, который, как раз, реализован в отдельном для диалогов файле - competition_menu.pwn.

Также используется метод перехвата ALS. Например здесь (https://github.com/Open-GTO/Open-GTO/blob/master/sources/competition/competition.pwn#L129-L161) перехватывается OnPlayerDisconnect.

Как можно заметить, вся эта система соревнований относительно просто может переехать в другие скрипты. Вся система сосредоточена в одном каталоге и использует лишь несколько внешних зависимостей - собственные системы мультиязычности и диалогов, которые доступны в виде библиотек.