Git + 1С. Часть 2. Реализация Git workflow в 1С-разработке по шагам

28.01.19

Разработка - Групповая разработка (Git, хранилище)

В этой части мы рассмотрим наиболее распространённую схему workflow при групповой разработке с использованием Git. Как приступить к доработке по поставленной задаче; исправить ошибку, обнаруженную на этапе тестирования; отправить свой код на слияние в предстоящий релиз; и т.д. Постараемся охватить большинство задач, составляющих основной цикл разработки

Часть 1. Как подключиться к команде разработки и начать использовать Git

 
 Содержание

Часть 2. Реализация Git workflow в 1С-разработке по шагам (эта статья)

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

Начало работы над задачей

Работу по каждой задаче следует выполнять в отдельных ветках, называемых "фича". По соглашению в команде, имя фичи содержит, как правило, номер задачи из трекера. Например, у нас принят шаблон: feature9999. Фича начинается в основном стволе разработки (обычно это ветка develop) и сливается в него по окончании разработки.

Прежде чем начать работу над задачей, актуализируем состояние своего локального репозитория, ведь с тех пор, как мы делали это последний раз, могли появиться новые коммиты наших коллег. Для этого сделаем текущей ветку develop, перейдя на неё, и выполним получение изменений.

Переход на ветку develop и получение изменений

 
 cmd
 
 SourceTree

В списке веток выполняем двойной щелчок по ветке develop. Активная ветка выделяется полужирным начертанием и появляется колечко слева от имени.

Для получения изменений в текущую ветку нажимаем кнопку "Получить" и в открывшемся окне нажимаем ОК (ничего в нём не меняем):

На этом рисунке также видно, что SourceTree любезно информирует о наличии новых трёх коммитов в текущей ветке (возле кнопки "Получить" и рядом с именем ветки). Кроме того, видно, что в неактивной ветке master также есть один не полученный коммит.

При необходимости взять в работу еще одну фичу, приостановив работу над предыдущей, следует проделать эту последовательность еще раз. Но перед этим сделайте коммит в первой фиче (хотя, Git и так вас предупредит, если обнаружит не зафиксированные изменения). Таким образом, у разработчика может быть несколько незакрытых фич, между которыми он переключается в процессе работы, переходя с одной ветки на другую (точно так же, как мы в начале делали активной ветку develop).

Более того, разработчик может в рамках своей фичи создавать собственные суб-ветки и целые деревья, если это необходимо, чтобы, например, реализовать параллельно несколько идей в решаемой задаче или решить ее несколькими способами и сравнить результат. Главное, чтобы в конечном итоге на слияние в develop был отправлен тот единственный рабочий вариант, который должен уйти в рабочую версию.

Процесс жизнедеятельности задачи

Фиксация изменений

По мере того, как продвигается работа над задачей, правилом хорошего тона является периодическая фиксация изменений, или коммит, в ветку фичи.

Напомню, что в процессе коммита изменённые файлы проходят через несколько состояний: сначала они индексируются (или собираются "в очередь" на фиксацию, add), затем производится коммит (commit) проиндексированных изменений в локальный репозиторий, и в конце выполняется отправка (push) изменений в удалённый репозиторий. Некоторые инструменты по работе с Git делают несколько или все эти операции одновременно, так что для разработчика процесс происходит быстро и не напряжно. Но в целом положение дел с вашими файлами именно такое.

 
 cmd
 
 SouceTree

О появлении новых изменений в SourceTree сигнализирует надпись "Незакоммиченные изменения" в продолжении текущей ветки, при этом в списке "Файлы не в индексе" появится перечень всех изменённых файлов. Нажмите "Индексировать всё" (или выделите нужные для фиксации файлы и нажмите "Индексировать выделенное").

Проиндексированные файлы отправляем в коммит кнопкой "Закоммитить" в верхнем левом углу. Программа попросит внести комментарий к изменениям, после чего нажатие другой кнопки "Закоммитить", уже внизу справа, приведёт собственно к фиксации коммита.

При этом, если установить флажок "Сразу отправлять изменения в origin", то коммит будет отправлен в удалённый репозиторий, и ваша фича синхронизируется с локальной версией.

Если же флажок снят, то коммит будет зафиксирован только в локальном репозитории. Это может быть удобно, если в процессе разработки вы предпочитаете часто коммититься, но не торопитесь делиться с коллегами не работающим кодом. В этом случае, возле имени ветки и около кнопки "Отправить" появится информация о количестве коммитов, готовых к отправке из локального репозитория в удалённый.

Что мы получили в результате коммита:

  1. Ветка фичи продвинулась на одну позицию, обрела комментарий об изменениях в данной точке, и теперь выделена жирным шрифтом, что показывает ее текущее положение;
  2. Подробное описание коммита в развёрнутом виде;
  3. Перечень файлов, подвергшиеся изменению. Да, их тут чуть больше, чем мы индексировали, т.к. сработал precommit1c, но об этом чуть позже;
  4. Построчное описание изменений текущего (выделенного) файла.

Теперь, чтобы отправить наши локальные изменения в удалённый репозиторий, нажмём кнопку "Отправить", и в открывшемся окне (ничего в нём не меняя) еще раз нажимаем "Отправить".

В этом простом примере заодно было показано, как работает Precommit1c: в момент коммита он автоматически раскладывает внешнюю обработку на исходные файлы и бережно раскладывает их в папке src с учётом иерархии. И то же самое он будет делать и с расширениями конфигурации, если вы ведёте разработку с их использованием.

Тут я хотел продемонстрировать еще одно преимущество работы с Git: ваш рабочий каталог - это сам git-репозиторий. Не нужно куда-то отдельно копировать обработку, чтобы потом что-то делать для фиксации версии. Достаточно сохранить ее прямо в репозитории, а всю грязную работу Git и Precommit1c выполнят за вас. Главное - правильно указать в начале текущую рабочую ветку.

Отмена изменений и других последствий невнимательности

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

Отказ от индексирования изменений

Лично моя - самая частая ошибка :) Сначала индексируешь всё (удобно ведь одной кнопкой), а потом вспоминаешь, что не всё-то и надо было. Или вдруг вспоминаешь, что нужно было часть текущих изменений зафиксировать отдельным коммитом. Убираем файл из области индексирования:

 
 cmd
 
 SourceTree

 Для удаления файла из индекса предусмотрены две кнопки "Убрать всё из индекса" и "Убрать из индекса выделенное"

Игнорирование файлов, файл .gitignore

Файл .gitignore (именно так, с точкой и без расширения) и механизм игнорирования позволяют отключить от версионирования часть файлов из вашего репозитория. Это очень удобно, когда, например:

  • В локальном репозитории есть файл с локальными настройками или сведениями о состоянии проекта, но его смысл теряется при переходе к удалённому репозиторию. Такие файлы полезны только при работе на локальной машине, но их не надо коммитить. Пример такого файла - файл VERSION, необходимый при работе с gitsync;
  • В локальном репозитории вы храните дополнительные рабочие файлы проекта, которые нужны только вам, но их не нужно версионировать и делать достоянием всей команды. У меня в репозитории с правилами обмена таковыми являются файлы с описанием структуры конфигураций. Они лежат в одном месте со всем, что связано с обменами, но при этом не мешают другим разработчикам.

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

Если вы работаете с Git из консоли, то этот файл следует создать и настроить вручную.

 
 SourceTree

 Если файл еще не коммитился (новые файлы помечаются вопросительным знаком), то в его контекстном меню доступен пункт "Игнорировать...". При этом есть возможность выбрать вариант игнорирования.

Следует отметить, что сам файл .gitignore тоже коммитится и версионируется. Это может сбить с толку новичка, когда, например, после получения изменений из develop система вдруг перестаёт видеть часть файлов разработчика. Или при создании новой фичи не действует игнорирование, которое только что настраивал, но настройка осталась в другой фиче, которая еще не слита в develop.

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

Отмена изменений в индексе

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

 
 cmd
 
 SourceTree

 Изменённый файл отмечается значком с тремя точками, для таких файлов в контекстном меню доступна команда "Отменить"

Кроме того, ряд операций с изменениями (помещение в индекс, удаление из индекса, обращение коммита) можно производить не только над файлом в целом, но и на отдельных блоках изменений и даже с отдельными строками кода. Для этого в окне изменений справа от списка файлов предусмотрены соотвествующие кнопки над каждых блоком. Если выделить отдельные строки кода, то кнопка над блоком примет вид в соответствии с вашими действиями.

Внимание! Не все операции с выделенными строками возможны. Зачастую система требует, чтобы выделенные строки составляли непрерывный диапазон. А в операции с не подряд идущими строками (как на картинке) может быть отказано.

P.S. Отменяется выделение строки одинарным щелчком по ней же.

Просмотр изменений

Сравнение разных версий файлов и просмотр изменений - одна из ключевых задач, ради которых используется Git. Консольная команда git log использует большое число дополнительных параметров, благодаря которым можно получить практически любой отчёт по истории изменений.

 
 cmd
 
 SourceTree

Изменения для текущего (выделенного в списке) коммита можно видеть непосредственно в главном окне, в соответствующих областях. "Гуляя" по коммитам, можно увидеть перечень изменённых файлов и изменение строк кода для каждого из них.

Для просмотра всех изменений одного файла, достаточно найти его в списке коммита и в контекстном меню выбрать первый пункт "Журнал для выбранного":

Откроется окно журнала для выбранного файла, с перечнем всех коммитов, в рамках которых был изменён этот файл:

И тут встаёт ожидаемый вопрос: а если в текущем коммите нет файла, историю которого я хочу посмотреть? Или я вообще уже забыл, в каком коммите он последний раз изменялся? В этом случае просто воспользуйтесь командой git blame.

Да, да, я немного лукавил, когда говорил, что при использовании графической GUI-оболочки вы можете полностью отказаться от командной строки :)). Ни одна GUI не способна охватить весь спектр возможностей Git. И время от времени вы будете прибегать к помощи терминала. Он даже штатно вызывается из SourceTree в меню "Действия - Открыть в терминале...".

Еще один приём, который удобно применять при код-ревью - это просмотр изменений между двумя релизными коммитами. Если выделить первый коммит и, зажав клавишу Ctrl, выделить второй, то будут отображены все изменения, произведённые между этими двумя фиксациями:

О других методах отладки в Git можно почитать здесь.

Слияние готовой фичи в develop

Когда работа над задачей завершена, готовый код объединяется с общей веткой разработки develop. Этот процесс называют слиянием, или merge в терминах Git.

Смержить изменения можно тремя способами: а) Выполнить merge локально, и результат слияния отправить в origin; б) Выполнить запрос на слияние (pull-request) в общий репозиторий разработки; в) Выполнить pull-request из своего fork в авторский репозиторий. О последнем варианте есть отличная статья Антона Иванова, рекомендую к прочтению. В ней же описаны и основные приёмы работы с запросами на слияние.

Сразу стоит остановиться на моменте, который сбивает с толку многих новичков: "Из какой ветки в какую принимается код, когда я выполняю merge?". Ответ прост: значение имеет то, на какой ветке feature1 вы сейчас находитесь. А при выполнении команды, скажем, git merge feature2, вы принимаете к себе новый код. То есть, feature2 вливается в feature1.

Вариант 1. Локальный merge

 
 cmd
 
 SourceTree

Двойным щелчком на названии ветки делаем активной ту, в которую будем сливать код. В панели инструментов главного окна нажимаем кнопку "Слияние":

Откроется дополнительное окно для выбора коммита, из которого следует взять код для слияния. Выделяем нужный и щёлкаем "ОК". (Чтобы спозиционироваться на последнем коммите заранее известной ветки, бывает удобно воспользоваться кнопкой "Перейти на" в верхнем правом углу).

Если не было конфликтов слияния, то код принимается в родительскую ветку и выполняется локальный коммит. Теперь остаётся только отправить новую версию файла в удалённый репозиторий с помощью кнопки "Отправить".

Вариант 2. Создание запроса на слияние

Pull request, или запрос на слияние, отличается от простого слияния тем, что изменения никогда не принимаются сразу. При каждом таком запросе сливаемые ветки переходят в особое состояние, когда ожидают решения архитектора/тимлида о принятии новой версии. Работа эта (и создание запроса, и ответ на него) выполняется на сайте git-сервиса. Для всех сервисов процесс очень похож, приведу пример для GitHub.

На странице проекта нажимаем кнопку "New pull request"

Далее, выбираем исходную и целевую ветки слияния. При этом название запроса автоматически будет подставлено из комментария коммита. При необходимости можно указать подробный комментарий к запросу. Нажимаем кнопку "Create pull request", и запрос готов.

После проверки нового кода, владелец проекта нажмёт кнопку "Merge pull request", после чего изменения будут приняты в родительскую ветку.

Вместо заключения. О чём договариваемся в команде

  1. Выбор модели ветвления;
  2. Правила именования фич;
  3. Частота выполнения коммитов в процессе работы;
  4. На какой версии платформы работает вся команда? Важный момент, поскольку от релиза к релизу платформа может немного менять формат выгрузки конфигурации в файлы, да и в самих файлах содержится информация о версии платформы, которой они были созданы. При нарушении этой договорённости, коммиты отдельных сотрудников будут вызывать такое количество изменений, что польза самого использования Git сойдёт на "нет". Пропишите это в Readme к своему репозиторию (как, собственно, и все остальные правила вашей команды);
  5. Именование коммитов. Хорошая статья на эту тему - здесь;
  6. Состав файла .gitignore.

См. также

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9141    78    4    

110

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1169    bayselonarrend    3    

35

Автоматизация процесса разработки с помощью сервиса GitFlic

Групповая разработка (Git, хранилище) Бесплатно (free)

GitFlic – первая в России полностью самостоятельная реализация сервиса для хранения репозиториев с исходным кодом. За три года разработки сервис GitFlic стал полноценным инструментом, которым можно заменить GitLab, GitHub и BitBucket. Расскажем о том, как выстроить в GitFlic процесс автоматического тестирования, статического анализа кода и сборки приложений.

05.03.2024    1865    user1989937    6    

15

OpenYellow - рейтинг открытых GitHub репозиториев для платформы 1С:Предприятие

Групповая разработка (Git, хранилище) Бесплатно (free)

Обновляемый топ GitHub репозиториев для 1С по всем языкам программирования и еще немного рассуждений про open-source.

05.02.2024    3780    bayselonarrend    15    

61

Насколько глубок 1С-ный GitHub?

Групповая разработка (Git, хранилище) Бесплатно (free)

Open-source проекты - важная часть мира программного обеспечения. 1С привычно держится немного в стороне от глобальных трендов, но бросить холодный статистический взгляд на положение дел мне показалось небезынтересным.

22.01.2024    7840    bayselonarrend    50    

86

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2772    kamisov    17    

57

Отдай корень! Библиотека OneScript для получения информации о захваченных объектах в хранилище

Групповая разработка (Git, хранилище) Бесплатно (free)

Хранилище конфигурации 1С - это инструмент групповой разработки. Работают с хранилищем следующим образом: захватывают какой-либо объект, редактируют, потом отдают его в хранилище. Хранилище помечает уже захваченные объекты и не дает возможности захватить их другим пользователям. Это рождает и самый большой недостаток хранилища - невозможность работы с одним объектом нескольких пользователей, например в случае доработки разных методов в одном большом модуле. Корень конфигурации - это самый верхний ее узел. Только захватив корень, мы можем добавить в конфигурацию новые общие модули, документы, справочники, регистры и подобное. Только захватив корень можно изменить настройки поддержки конфигурации. Соответственно, если корень захвачен одним программистом, другой программист не может добавить новые объекты или снять что-то с поддержки. Потому то и всплывает эта фраза - отдай корень, мне нужно тоже что-то добавить.

26.12.2023    1336    ardn    1    

26

Git Code Review - инструмент для рецензирования кода

Групповая разработка (Git, хранилище) Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Абонемент ($m)

Git Code Review - инструмент, позволяющий быстро анализировать изменения из git-репозитория прямо в 1С

1 стартмани

20.12.2023    3958    59    salexdv    26    

81
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Vladimir Litvinenko 2869 29.01.19 01:06 Сейчас в теме
для начала предстоит решить, какую модель ветвления вы будете использовать

По сравнению и применимости моделей ветвления (точнее воркфлоу) хотел бы поделиться ссылками на лучшие публикации, которые встречал по этой теме. Они правда на английском. C сайта Atlassian, где вообще очень много хороших методических материалов:

Модель с одной веткой и общее сравнение моделей: https://www.atlassian.com/git/tutorials/comparing-workflows
Модель фича-бранчей: https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow
Гитфлоу: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Форки и пул-реквесты: https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow


P.S.: Из прошлой публикации https://infostart.ru/public/864097 пропала информация о том, что будет отдельная статья про применение Visual Studio Code при разработке на 1С. Надеялся, что выйдет. Больше нет в планах её публиковать?
JohnyDeath; eeeio; zeegin; +3 Ответить
3. stas_ganiev 1773 29.01.19 03:44 Сейчас в теме
(1) Может и будет)) Просто не хочется обещать, вдруг опять что-то пойдёт не так...
2. drmaxart 145 29.01.19 01:07 Сейчас в теме
Большое спасибо за статью! Давно ожидали продолжения 1-й части!
stas_ganiev; +1 Ответить
4. zeegin 114 29.01.19 05:23 Сейчас в теме
При активном использовании CI/CD можно избежать использование веток develop, release и hotfix совсем.

Это то, что рекомендуется в вариантах github flow и gitlab flow.
stas_ganiev; +1 Ответить
5. kalyaka 1053 29.01.19 08:38 Сейчас в теме
(4) пожалуйста дайте ссылку на рекомендацию или поясните как тогда работать с хотфиксами и планированием релизов?

Думаю над организацией релизного управления и у меня пока классическое понимание: планирование релиза, сборка, тестирование, выпуск в продукт, исправление ошибок хотфиксами. При этом хотфиксы не идут в ветку develop, а при очередном релизе затираются нормальным решением.
6. zeegin 114 29.01.19 08:59 Сейчас в теме
(5) суть DevOps а в том, что у тебя был бы в мастере код всегда готовый к релизу. Любой комит может быть релизом. Фактическим релизом становится тот, на который ты повесишь тег.

Достигается это за счет предварительной проверки любого бранча до вливания его в мастер при мердж реквесте.

Для гитхаб флоу это так, в гитлаб флоу рекомендуется еще и деливери делать отдельными ветками типа с мастера можно отмерджить в ветеупрепрод где стейдж окружение и тесты уже не покомитные продукта, а скопом все окружение как копия прода, а с препрода можно отмерджить в прод.
serge_grand; JohnyDeath; stas_ganiev; +3 Ответить
7. chea06 133 31.01.19 12:50 Сейчас в теме
> git add FileName
> git commit -m "my comment" -a


использование параметра -a в команде commit делает бессмысленной вышеуказанную команду "git add FileName", потому как добавляет автоматом все изменения в индекс, а вы судя по всему хотели в индексе видеть только FileName
stas_ganiev; +1 Ответить
8. exzanimo 30.03.19 22:03 Сейчас в теме
Интересно увидеть 3 часть :)
SirYozha; +1 Ответить
11. N!ghtmare 25.04.19 20:35 Сейчас в теме
(8)
Согласен.
(0)
Самое интересное начинается при деплое. Собрать cf из Гита(если соберётся) и ...
12. ellavs 1022 26.04.19 07:53 Сейчас в теме
(11)
Собрать cf из Гита(если соберётся)

Работаю с EDT, там конфигурация из исходников вроде нормально собирается. Т.е. работа происходит изначально с исходниками, из которых при каждом тестовом запуске собирается конфигурация.
9. kasper076 101 16.04.19 14:03 Сейчас в теме
(0) Как работаете с ветками? Под каждую ветку заводите отдельную базу? Используете инкрементальные выгрузку и загрузку из/в конфигуратор? Как осуществляете переход между ветками, в которых созданы новые объекты?
14. stas_ganiev 1773 26.04.19 19:25 Сейчас в теме
(9)Под разные конфигурации следует создавать отдельные репозитории. Ветки репозитория - это истории жизни разных версий одного проекта, но никак не разные проекты.
Переход между ветками - обычным образом. Какие у вас с этим сложности?
15. kasper076 101 06.05.19 09:57 Сейчас в теме
(14) Ветки создаются под каждую задачу. Но если в рамках задачи создается новый объект конфигурации, то как быть тут? В одной ветке объект есть, в других нет.
16. stas_ganiev 1773 06.05.19 10:07 Сейчас в теме
(15)Тут следует поступать так же, как и в хранилище: добавляем объект и сразу вливаем его в основной ствол, предварительно сделав минимальные необходимые настройки. Ветку фичи при этом не закрываем и продолжаем в ней работать.
Другой вариант (без помещения в основной ствол): те, кому нужен новый объект, мержится от вашей фичи напрямую к себе. Потом уже не важно, кто первый смержить объект в дев, это уже легко разруливается гитом.
17. kasper076 101 06.05.19 12:40 Сейчас в теме
(16) В итоге нужно обновлять все свои ветки, чтобы данный объект был в них, либо заводить под базу с новым объектом отдельную базу. Так?
18. kasper076 101 06.05.19 13:52 Сейчас в теме
(17)
заводить под *ветку с новым
10. kasper076 101 16.04.19 14:03 Сейчас в теме
13. NNomad 26.04.19 11:33 Сейчас в теме
Подскажите, пожалуйста, может кто сталкивался с проблемой различия кодировок в именах файлов и их содержимым?
Использую стандартную функцию Конфигурация->Выгрузить конфигурацию в файлы.
При изменении настроек кодировок в SourseTree корректно работает что-то одно.
Поведение программы видно на скриншотах.
Прикрепленные файлы:
19. strange2007 144 23.01.20 08:15 Сейчас в теме
Вот прям чувствую, что GIT прикольная штука, но не могу придумать, где ж она поможет в реальной жизни((((
Честное слово, уже много раз думал
maksa2005; +1 Ответить
20. stas_ganiev 1773 23.01.20 08:23 Сейчас в теме
(19)При разработке правил обмена очень здорово помогает. Давно версионируем правила, не раз помогало в спорных ситуациях и при расследовании инцидентов. Плюс, не надо тыркать друг друга и объяснять тестировщикам и внедрецам, откуда какие правила брать, - каждый просто берет их из нужной ветки.
Также, на прошлом месте работы у нас был весь проект в Git: расширения конфы + внешние отчеты и обработки. Удобно тем, что всё причастное к конфигурации лежит в одном месте, а в истории версий релизов фиксируются все измененные файлы. Не возникает вопроса, где какая обработка у кого лежит
21. strange2007 144 23.01.20 08:56 Сейчас в теме
(20) Спасибо. Правила обмена, это идеальный пример. Правда спасибо.

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

В общем для себя немного прояснил. Но мне кажется, если поменять методику, то git и в этих случаях не понадобится и использовать будет удобней.
22. stas_ganiev 1773 23.01.20 10:15 Сейчас в теме
(21)Предложите такую методику, и сообщество скажет вам "Спасибо!" :)
23. strange2007 144 23.01.20 10:28 Сейчас в теме
(22) С удовольствием, но я слишком слаб и немощен. С 2009 года всем рассказываю про клёвости, а люди просто не понимают и выбирают путь трудный и тернистый. Самое простое - нафига плодить кучу того, что надо потом в git пихать, если лучше привести к нормальности БП предприятия и не напрягаться? Тем более писанина так или иначе приводит к позорному закидыванию помидорами, потому что команда закапывается в писанине. И не важно на сколько она структуирована.
Увы, это подтверждал на многих предприятиях
I_r_a; acanta; stas_ganiev; +3 Ответить
24. stas_ganiev 1773 23.01.20 10:39 Сейчас в теме
(23)Если надумаете внедрять правила обмена с Гитом, то обратите внимание на это: https://infostart.ru/public/632457/
strange2007; +1 Ответить
25. strange2007 144 23.01.20 10:59 Сейчас в теме
(24) Спасибо. Это честное спасибо.

Но пока что я и дальше буду работать по старинке:
- Все обмены делать так, что бы в них надо было лазить один-два раза в год и только для очень мелких доработок
- К КД2 (тройку то я не знаю) подпускать только того, кто сможет внятно объяснить как конвертировать субконто.
- Не подпускать к обмену на 1.2 км любого человека, который начинает работу со слов: "ада! что тут за фигня написана? ща исправлю мигом"
26. buganov 200 27.05.20 10:18 Сейчас в теме
За статью жирный плюс!
Подскажите, пожалуйста, вот выгрузил я сорцы в гит, а как потом собирать их? Вручную. или каким то образом можно тоже автоматизировать процесс?
stas_ganiev; +1 Ответить
27. stas_ganiev 1773 28.05.20 01:25 Сейчас в теме
(26) Можно автоматизировать, есть отдельные инструменты для этого
28. buganov 200 28.05.20 12:05 Сейчас в теме
(27) а можно и мне о них? Хочу у себя в компании внедрить гит для начала хотя бы для внешних обработок, а то вечные грабли при групповой доработке...
29. Dem0 18 27.08.20 14:54 Сейчас в теме
А можно по шагам для особо "сомневающихся"?
Вот я установил гит, sourceTree зарегистрировался на гихабе и на битбакете.
создал пустой каталог на компе - захреначил туда файлов - и закомиттил это барахло на гитхаб.
Так же спокойно получаю оттуда то, что нужно.
Но вот в какой момент Precommit1c будет раскладывать цф на файлы конфигурации и загружать обратно?
Вот я сижу в конфигураторе - создал пустую базу, добавил туда документ и справочник. Что дальше должно произойти, чтобы на гитхаб само закомиттилось?
30. alexey_kurdyukov 155 21.09.20 12:46 Сейчас в теме
В итоге непонятно: как происходит доставка данных из 1С в Git и обратно. Ну, допустим, выгрузка в файлы в 1С есть, даже вроде выгружаются только изменения, тут вроде есть варианты. Но что делать с загрузкой? Загружается же вся конфигурация целиком, а это несколько часов загрузки и обновления БД + работа только в 64-битном конфигураторе + снятие конфы с поддержки. Вот этот вопрос непонятен совсем.
amatoravg; +1 Ответить
31. agent00mouse 253 01.09.21 11:05 Сейчас в теме
(29) (30) Собственно тоже вопрос возник. обработка разваливается на файлы. Все льётся на гита. А собирать кто будет? Смысл всей этой работы? как мне собрать обратно обработку при pull'e?
32. unichkin 1559 12.10.22 14:28 Сейчас в теме
33. monkbest 115 04.07.23 07:47 Сейчас в теме
Читаю статью за статьей про GIT, EDT... никак не найду примера "реальной работы", все рассказывают про какие-то доработки одной обработки/модуля на проекте с 10+ разработчиками и при этом упоминают ERP.
В реальности доработанных объектов сотни или тысячи и пару раз в месяц выходит обновление от вендора, которое добавляет тысячи изменений в еще не доработанные объекты и в уже доработанные, если все это мержить сторонним софтом, то потом cf может и вообще не собраться, а может быть потеря данных из-за смены GUIDа объекта.
И вот тут и хочется услышать о подходах, как вести ветку vendor, как соединять vendor с develop?
Что разработка, что поддержка без регулярного получения изменений от вендора - МИФЫ ДРЕВНЕЙ ГРЕЦИИ. Если пол года не обновляться, потом ощутимую долю доработок придется делать чуть ли не заново.
Это основное отличие 1С от другого софта - объем изменений от самой 1С. Это и есть причина "глюков" и "мучений" пользователей и разработчиков. В другом софте люди фиксируют релиз, который есть сейчас и с ним живут до следующего внедрения лет 10, внося только личные правки.
VKislitsin; stas_ganiev; +2 Ответить
34. stas_ganiev 1773 04.07.23 14:22 Сейчас в теме
(33) Антон, благодарю за комментарий! Подскажите, в каком технологическом стеке работаете? Какие инструменты предпочитаете или планируете использовать? Как раз думаю над темой следующей статьи, возможно, ответ на ваш вопрос станет ее темой ;)
35. monkbest 115 04.07.23 15:03 Сейчас в теме
(34) стек простой - 1С, т.е. Конфигуратор+Хранилище или просто Конфигуратор
есть несколько ЗУПов на каждый филиал, все очень "крепко перепаханы", в большинстве своем одинаково, но есть отличия
надо оперативно ставить обновления, делать новые доработки и вычищать устаревшие

нравится как в GIT можно анализировать версии и связать комиты с задачами, но вижу только следующую схему:
по ночам со всех баз выгружаем в файлы конфу/внешние обработки/расширения. Дальше все изменения кто-то разгребает и фиксирует, кто-что и зачем и пушит в репозиторий. Т.е. такой "посмертный" учет разработки.
Разработка и обновления продолжить делать стандартно.

Было бы круто иметь на каждую рабочую базу свою ветку, ветку вендора и возможность отправлять доработку в несколько выбранных рабочих веток. При обновлении мы просто ставим в типовую базу обновление и отправляем 1000 изменей во все рабочие ветки. Потом собираем конфу для рабочей базы.
Оставьте свое сообщение