Настроить групповую разработку

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

Установка Git и Git LFS

1C:EDT содержит встроенную поддержку Git, поэтому если вы создаете или разрабатываете учебные проекты, небольшие конфигурации, то вы можете пропустить этот раздел и перейти к следующему: Настройки групповой разработки (config).

Если же вы собираетесь модифицировать типовые прикладные решения «1С:Предприятия», то вам понадобится установить и настроить Git LFS (Large File Storage). Это расширение для Git, предназначенное для работы с большими файлами и бинарными данными, такими как изображения, видео, аудиофайлы, 3D-модели и другие подобные данные.

Чтобы настроить Git LFS вам понадобится командная строка Git. А для этого нужно установить Git. Поэтому сначала выполните следующие действия:
  1. Скачайте и установите Git: https://git-scm.com/
  2. Скачайте и установите Git LFS: https://git-lfs.com/
  3. Настройте Git LFS для своей учетной записи. Для этого:
    1. В строку поиска введите «командная строка»;
    2. Запустите интерпретатор командной строки;
    3. Выполните команду:
      git lfs install
      В ответ вы получите:
      Git LFS initialized.

В результате выполнения этой команды в конфигурацию Git будут добавлены параметры, необходимые для работы с Git LFS. Вы можете увидеть их, нажав Окно > Параметры... > Групповая разработка > Git > Конфигурация > Настройки пользователя, или открыв файл конфигурации, который стандартно находится в каталоге пользователя C:\Users\ИмяПользователя\.gitconfig:

[filter "lfs"]
	required = true
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process

Теперь, если вы клонируете репозиторий, использующий Git LFS, вы сможете беспрепятственно получать и отправлять все файлы проекта.

Но если вы захотите создать для своего проекта новый репозиторий, использующий Git LFS, то вам нужно будет сделать дополнительные настройки, предназначенные именно для этого репозитория: Настройка Git LFS в новом репозитории.

Настройки групповой разработки (config)

Эти настройки можно выполнить в параметрах 1C:EDT или из командной строки в консоли Git, если Git уже установлен у вас на компьютере.

Чтобы открыть настройки Git в параметрах 1C:EDT:

  1. Запустите проект 1C:EDT Start;
  2. Нажмите Окно > Параметры... > Групповая разработка > Git > Конфигурация > Настройки пользователя чтобы открыть конфигурацию Git.
Например, чтобы указать здесь адрес электронной почты нужно выполнить следующие действия:
  1. Нажмите Добавить запись;
  2. В поле Ключ введите значение user.email;
  3. В поле Значение введите значение johndoe@example.com
  4. Нажмите Добавить.
Те же самые действия можно выполнить из командной строки следующей командой:
git config --global user.email johndoe@example.com

Результат будет одинаковым.

Далее все настройки будут описаны для работы с параметрами 1C:EDT и в качестве справки будут даны консольные команды.

Имя и адрес электронной почты

При первом коммите 1C:EDT попросит вас указать имя и адрес электронной почты, которыми она будет идентифицировать ваши коммиты. Чтобы другие разработчики могли понимать, кто именно внес те или иные изменения.

Если вы пропустили этот шаг или хотите изменить эти данные, добавьте следующие параметры:
  • user.name — ваше имя;
  • user.email — ваш адрес электронной почты.

При работе из командной строки используйте следующие команды:

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
Длинные имена файлов

На вашем компьютере может существовать ограничение на длину имени файла, например 260 символов в операционной системе Windows. Поэтому при клонировании репозиториев или при создании локальных репозиториев можно получить ошибку Filename too long.

Чтобы избежать этого, воспользуйтесь следующими советами:
  • располагайте локальные репозитории как можно ближе к корню диска;
  • запустите 1C:EDT от имени администратора и добавьте следующий параметр:
    • core.longpathstrue.
    Совет: Чтобы запустить 1C:EDT от имени администратора:
    1. Закройте 1C:EDT;
    2. Закройте 1C:EDT Start;
    3. С помощью команды Пуск > 1C Enterprise Development Tools > 1CEDT Start запустите 1C:EDT Start от имени администратора (Запуск от имени администратора в контекстном меню);
    4. Запустите проект 1C:EDT Start;
    5. Откройте конфигурацию групповой разработки 1C:EDT.
При работе из командной строки используйте следующую команду (консоль Git должна быть запущена от имени администратора):
git config --system core.longpaths true
Большие файлы

При работе с удаленным репозиторием могут возникать проблемы во время выполнения команд Push to origin и Получить и слить в том случае, когда вы работаете по протоколу HTTP и в репозитории есть большие файлы. В этом случае вам поможет увеличение параметра http.postBuffer.

Добавьте следующий параметр:
  • http.postBuffer1048576000.

При работе из командной строки используйте следующую команду:

git config --global http.postBuffer 1048576000

Подробнее о назначении этого параметра можно прочитать в документации Git на английском языке: git config http.postBuffer.

Символы окончания строк

Если разработчики, работающие над проектом, используют разные операционные системы (Microsoft Windows, Linux, macOS), нужно настроить конвертацию символов окончания строк при помещении в репозиторий и чтении из него. Следующие команды настраивают Git таким образом, что в рабочей копии разработчика будут использоваться «родные» для его операционной системы символы, а в репозитории всегда будет использоваться LF.

Windows

Добавьте следующие параметры:
  • core.autocrlftrue;
  • core.safecrlftrue.

При работе из командной строки используйте следующие команды:

git config --global core.autocrlf true
git config --global core.safecrlf true

Linux и macOS

Добавьте следующие параметры:
  • core.autocrlfinput;
  • core.safecrlftrue.

При работе из командной строки используйте следующие команды:

git config --global core.autocrlf input
git config --global core.safecrlf true

Подробнее о назначении этих параметров можно прочитать в документации Git на английском языке: git config core.autocrlf и git config core.safecrlf.

Возможная проблема: Если вы не настроили символы окончания строк и отправили свою ветку на сервер, то при слиянии будут обнаружены отличия практически во всех файлах. Чтобы исправить эту ситуацию и привести окончания строк в серверной ветке к нужному виду, воспользуйтесь этим советом.
Русские буквы в путях

Файлы с русскими буквами могут показываться в нечитаемой кодировке.

Для устранения этой проблемы добавьте следующий параметр:
  • core.quotePathfalse.

При работе из командной строки используйте следующую команду:

git config --global core.quotePath false

Подробнее о назначении этого параметра можно прочитать в документации Git на английском языке: git config core.quotePath.

Настройка Git LFS в новом репозитории

Если вы еще не установили Git и Git LFS, сделайте это: Установка Git и Git LFS.

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

Чтобы настроить в репозитории поддержку Git LFS, выполните следующие действия:
  1. В строку поиска введите «командная строка»;
  2. Запустите интерпретатор командной строки;
  3. Перейдите в каталог репозитория (в нем расположен каталог .git);
  4. Выполните команду:
    git lfs install
    В ответ вы получите:
    Updated Git hooks.
    Git LFS initialized.

    Эта команда создаст в репозитории специальный хук pre-push, который будет передавать файлы Git LFS на сервер при выполнении команды Отправить.

  5. Выберите типы файлов, которые должны находиться под управлением Git LFS. Для этого нужно выполнить команду git lfs track с указанием расширения файла. Мы рекомендуем помещать в Git LFS все файлы конфигураций поставщиков, файлы макетов с двоичными данными, картинки и архивы. Например:
    git lfs track "*.cf"
    git lfs track "*.bin"
    git lfs track "*.png"
    git lfs track "*.gif"
    git lfs track "*.bmp"
    git lfs track "*.jpg"
    git lfs track "*.zip"
    Можно отслеживать в Git LFS только некоторые типы файлов с расширением *.bin. Например, можно включить отслеживание только шаблонов и модулей без исходного кода по маске:
    git lfs track "*/Ext/Template.bin"
    git lfs track "*/Ext/Module.bin"

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

  6. Поместите файл .gitattributes под версионный контроль, чтобы все разработчики, использующие этот репозиторий, использовали одинаковые настройки отслеживаемых файлов. Для этого выполните команду:
    git add .gitattributes

Теперь вы можете выполнить первый коммит в этом репозитории, а затем отправить изменения в удаленный репозиторий.

Имейте в виду, что не все Git-серверы, которые можно использовать для размещения удаленных репозиториев, поддерживают Git LFS. Кроме этого серверы, имеющие такую поддержку, по-разному ее реализуют. Некоторые делают это автоматически для всех репозиториев (например, GitHub), а в некоторых ее надо включать в явном виде в настройках репозитория (например, Bitbucket).

Настройка тайм-аута при работе с удаленными репозиториями

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

Git repository clone failed.
Read timed out after 30 000 ms

В этом случае можно попробовать увеличить тайм-аут удаленного соединения, установленный по умолчанию в 30 с. Для этого нажмите Окно > Параметры... > Групповая разработка > Git. В поле Тайм-аут удаленного подключения (сек) введите большее значение.

Неправильные символы окончания строк в серверной ветке Git

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

Чтобы исправить эту ситуацию и привести окончания строк в серверной ветке к правильному виду, выполните следующие действия:
  1. Удалите локальную копию удаленного репозитория, который вы склонировали ранее (установите флажки Delete Git repository data and history и Also delete working tree);
  2. В настройках Git установите (измените) следующие параметры:
    • core.autocrlffalse;
    • core.safecrlffalse;
  3. Заново склонируйте удаленный репозиторий;
  4. Переключитесь на свою ветку, в которой нужно исправить символы окончания строк;
  5. Преобразуйте разделители строк в LF. Для этого
    • В панели Навигатор выделите проект;
    • В главном меню нажмите Файл > Преобразовать разделители строк в > Unix;
    • Нажмите Выбрать все, а затем ОК.
  6. Зафиксируйте изменения и отправьте их на сервер (в коммит попадут только те файлы, в которых были неправильные разделители строк);
  7. Удалите локальную копию удаленного репозитория, который вы склонировали в пункте 3;
  8. Верните настройки Git в правильное состояние:
    • Для операционной системы Windows:
      • core.autocrlftrue;
      • core.safecrlftrue;
    • Для операционных систем Linux и macOS:
      • core.autocrlfinput;
      • core.safecrlftrue;
  9. Еще раз склонируйте удаленный репозиторий и продолжайте работать как обычно.