Важно
Перевод - это работа сообщества : ссылка:Вы можете присоединиться. Эта страница в настоящее время переводится |прогресс перевода|.
1. Пошаговое руководство
Примечание
Хотя для демонстрации процесса используется QGIS-Documentation, все команды и шаги, показанные ниже, применимы и к QGIS-Website.
Если вы читаете эти строки, то наверняка хотите внести свой вклад в написание документации по QGIS и ищете руководство к действию. Вы пришли в нужное место! В этом документе мы расскажем вам о различных способах достижения этой цели, покажем основные шаги, которые необходимо выполнить, приемы, которые можно использовать, и ловушки, о которых следует знать.
Если вам нужна помощь, не стесняйтесь спрашивать в комментариях к отчету о проблеме, которую вы пытаетесь исправить, или пишите в список QGIS-community-team. Ознакомьтесь с общей информацией о поддержке сообщества QGIS <https://qgis.org/resources/support/>`_.
Теперь давайте погрузимся в процесс.
Исходные тексты документации хранятся с помощью системы контроля версий git и доступны на GitHub по адресу https://github.com/qgis/QGIS-Documentation. Список проблем, которые нужно исправить, и функций, которые нужно объяснить, можно найти на https://github.com/qgis/QGIS-Documentation/issues.
Совет
Если вы впервые участвуете в проекте и не знаете, с чего начать, возможно, вам будет интересно разобраться с нашими «приветственными» отчетами о проблемах <https://github.com/qgis/QGIS-Documentation/contribute>`_.
Существует два основных способа изменения файлов, не исключающих друг друга:
1.1. Использование веб-интерфейса GitHub
Веб-интерфейс GitHub позволяет выполнять следующие действия:
редактировать файлы
просмотрите и зафиксируйте изменения
оформите запрос на притяжение, чтобы ваши изменения были добавлены в основной репозиторий
создавать, обновлять или удалять ветви
Если вы еще не знакомы с git и лексикой GitHub, вам стоит прочитать проект GitHub Hello-world, чтобы узнать базовую лексику и действия, которые будут использоваться ниже.
Примечание
Если вы устраняете проблему, о которой было сообщено
Если вы вносите изменения для исправления проблемы, добавьте комментарий к отчету о проблеме, чтобы назначить ее своей. Это не позволит нескольким людям работать над одной проблемой.
1.1.1. Форк QGIS-Документация
Предполагая, что у вас уже есть аккаунт на GitHub <https://github.com/signup>`_, сначала вам нужно форкнуть исходные файлы документации.
Перейдите на страницу QGIS-документация репозитория и нажмите на кнопку в правом верхнем углу.
В вашем аккаунте на GitHub вы найдете репозиторий QGIS-документация (https://github.com/<YourName>/QGIS-Documentation
). Этот репозиторий является копией официального репозитория QGIS-Documentation, где у вас есть полный доступ на запись, и вы можете вносить изменения, не затрагивая официальную документацию.
1.1.2. Внести изменения
Существуют различные способы внесения вклада в документацию QGIS. Ниже мы покажем их по отдельности, но вы можете переключаться с одного процесса на другой без какого-либо ущерба.
Альтернатива 1: Используйте ярлык Редактировать на GitHub
Страницы на сайте документации QGIS можно легко и быстро редактировать, нажав на ссылку Редактировать на GitHub
в правом верхнем углу каждой страницы или в выпадающем меню в нижней части левой боковой панели.
Это откроет файл в ветке
qgis:master
с сообщением в верхней части страницы о том, что у вас нет доступа на запись в это хранилище и ваши изменения будут применены к новой ветке вашего репозитория.Внесите свои изменения. Поскольку документация написана с использованием синтаксиса reStructureText, в зависимости от ваших изменений, вам может понадобиться руководствоваться Руководством по написанию.
Закончив изменение файла, нажмите Коммитировать изменения… и добавьте короткий заголовок, объясняющий ваши изменения. При необходимости вы можете дать более подробное объяснение.
Нажмите Предложить изменения, сохранив модификации в вашем репозитории. В результате в вашем репозитории будет создана выделенная ветвь <https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches>`_ (
patch-xxx
), а в веб-браузере откроется страница :guilabel:Сравнение изменений
.Если проблема, которую вы решаете, не нуждается в дальнейших изменениях, перейдите к разделу Поделиться своими изменениями через Pull Request ниже.
Если вы хотите внести дополнительные изменения перед отправкой в QGIS, выполните следующие действия:
Перейдите к вашему форку QGIS-документации (
https://github.com/<YourName>/QGIS-Documentation
)Выберите его. Кнопка
теперь будет отображать Ветвь: patch-xxx.
Перейдите к разделу :ref:`Изменение файлов<modify_files> ` ниже.
Альтернатива 2: Создайте специальную ветку в репозитории документации
Вы можете редактировать файлы прямо из форка Документации QGIS.
Сначала убедитесь, что ваша ветка master
обновлена до последней версии, т. е. ветки qgis/QGIS-Documentation:master
. Для этого:
Перейдите на главную страницу вашего репозитория, то есть
https:/<YourName>/github.com//QGIS-Documentation
. Веткаmaster
должна быть активной с упоминанием того, обновлена ли она доqgis/QGIS-Documentation:master
или нет.Если она имеет коммиты, опережающие ветку восходящего потока, лучше использовать предыдущую альтернативную кнопку быстрого доступа, пока вы не выровняете свою
мастерскую
ветку.Если за ним стоят только коммиты:
Раскройте раскрывающееся меню :guilabel:«Синхронизация форка» справа. Вы можете:
Сравните ветки и посмотрите новые изменения в верхней ветке, которых еще нет в вашей.
Fetch and merge: переносит изменения из вышестоящей ветки в вашу.
Нажмите Fetch и merge: после завершения процесса ваша ветка будет указана как обновленная до
qgis/QGIS-Documentation:master
.
Щелкните
в верхнем левом углу вашего форка репозитория QGIS-Documentation и введите уникальное имя в текстовое поле, чтобы создать новую ветвь branch. Рекомендуется, чтобы название новой ветки было связано с проблемой, которую вы собираетесь исправить. Это удобно для идентификации ветки в дальнейшем.
Нажмите Создать ветвь<branch_name> из master. Кнопка
теперь должна отображать branch_name.
Вы готовы начать новые изменения в новой ветке.
Внимание
Вносите изменения в специальную ветку, никогда в мастер
ветку
По правилам, не вносите изменения в свою ветку master
, за исключением тех случаев, когда вы сливаете изменения из ветки master
в свою копию репозитория QGIS-Documentation. Отдельные ветки позволяют вам работать над несколькими проблемами одновременно, не вмешиваясь в работу других веток. Если вы допустите ошибку, вы всегда можете удалить ветку и начать заново, создав новую из основной ветки.
1.1.3. Изменение файлов
Убедитесь, что ветвь, которую вы хотите изменить, активна: ее название отображается в верхнем левом меню или в URL-адресе страницы.
Просмотрите исходные файлы и найдите файл, который необходимо изменить.
Обновите текст, следуя :ref:`рекомендациям по написанию<QGIS-documentation-guidelines> `
Закончив изменение файла, нажмите Коммитировать изменения… и добавьте короткий заголовок, объясняющий ваши изменения. При необходимости вы можете дать более подробное объяснение.
Убедитесь, что выбран параметр :guilabel:«Зафиксировать непосредственно в<branch_name> ветке».
Нажмите Commit изменения, чтобы сохранить ваши изменения в ветке.
Чтобы обновить или добавить новый файл изображения:
Перейдите в папку с файлом, который необходимо обновить или добавить.
В правом верхнем углу используйте меню управление_скриншотами.
, чтобы выбрать и загрузить файлы с вашего диска. Советы по форматированию изображений для документации можно найти в разделеЕсли файл с таким же именем уже существует, он будет перезаписан.
Еще раз зафиксируйте свои изменения в целевой ветке.
Повторите предыдущие шаги для всех других файлов, которые необходимо обновить, чтобы устранить проблему.
1.1.5. Удалите вашу объединенную ветвь
Вы можете удалить ветку после того, как ваши изменения будут объединены. Удаление старых веток избавит вас от неиспользуемых и устаревших веток в вашем репозитории.
1.2. Использование командной строки Git
Веб-интерфейс GitHub — это простой способ обновить репозиторий документации QGIS с помощью ваших вкладов, но он не предлагает инструментов для:
группируйте свои коммиты и очищайте историю изменений
устранить возможные конфликты с основным репозиторием
создать документацию для тестирования ваших изменений
Вам необходимо установить git на жесткий диск, чтобы получить доступ к более продвинутым и мощным инструментам и иметь локальную копию репозитория. Ниже приведены некоторые основные моменты, которые могут вам часто понадобиться. Вы также найдете правила, которые следует соблюдать, даже если вы выберете веб-интерфейс.
В приведенных ниже примерах кода строки, начинающиеся с символа «$», обозначают команды, которые необходимо ввести, а символы «#» — комментарии.
1.2.1. Локальный репозиторий
Теперь вы готовы получить локальную копию вашего репозитория QGIS-Documentation.
Вы можете клонировать свой репозиторий QGIS, используя веб-URL, следующим образом:
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone https://github.com/<YourName>/QGIS-Documentation.git
Предыдущая командная строка является лишь примером. Вам необходимо адаптировать как путь, так и URL-адрес репозитория, заменив <YourName>
на свое имя пользователя github.
Проверьте следующее:
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
origin — это имя удаленного репозитория вашего репозитория QGIS-Documentation.
master — это основная ветвь по умолчанию. Ни в коем случае не используйте ее для внесения изменений! Ни в коем случае!
В качестве альтернативы вы можете клонировать репозиторий QGIS с помощью протокола SSH:
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone [email protected]:<YourName>/QGIS-Documentation.git
Совет
Ошибка «Доступ запрещен (открытый ключ)»?
Если при выполнении предыдущей команды вы получаете ошибку «Permission denied (publickey)», возможно, проблема связана с вашим SSH-ключом. Подробности см. в Справке GitHub.
Если вы использовали протокол SSH, проверьте следующее:
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin [email protected]:<YourName>/QGIS-Documentation.git (fetch)
origin [email protected]:<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
Вы можете начать работать здесь, но в долгосрочной перспективе у вас возникнет много проблем, когда вы будете отправлять свой вклад (в процессе github это называется Pull Request), поскольку основная ветвь репозитория qgis/QGIS-Documentation будет отличаться от вашего локального/удаленного репозитория. Затем вам нужно будет отслеживать основной удаленный репозиторий и работать с ветвями.
1.2.2. Добавить еще один удаленный репозиторий
Чтобы иметь возможность следить за работой в основном проекте, добавьте новый удаленный репозиторий в свой локальный репозиторий. Этот новый удаленный репозиторий — репозиторий QGIS-Documentation из проекта QGIS:
$ git remote add upstream https://github.com/qgis/QGIS-Documentation.git
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
upstream https://github.com/qgis/QGIS-Documentation.git (fetch)
upstream https://github.com/qgis/QGIS-Documentation.git (push)
Аналогичным образом, вы можете использовать протокол SSH для добавления удаленного репозитория в ваш локальный репозиторий:
$ git remote add upstream [email protected]:qgis/QGIS-Documentation.git
$ git remote -v
origin [email protected]:<YourName>/QGIS-Documentation.git (fetch)
origin [email protected]:<YourName>/QGIS-Documentation.git (push)
upstream [email protected]:qgis/QGIS-Documentation.git (fetch)
upstream [email protected]:qgis/QGIS-Documentation.git (push)
Теперь у вас есть выбор между двумя удаленными репозиториями:
origin для отправки вашей локальной ветки в ваш удаленный репозиторий
upstream для объединения (если у вас есть на это право) вашего вклада с официальным ИЛИ для обновления вашей основной ветки локального репозитория из основной ветки официального репозитория.
Примечание
upstream — это всего лишь ярлык, своего рода стандартное название, но вы можете называть его как хотите.
1.2.3. Обновить базовую ветвь
Перед тем как приступить к работе над новым вкладом, всегда обновляйте основную ветвь в локальном репозитории. Предполагая, что вы хотите отправить изменения в тестовую документацию, выполните следующие команды:
# switch to master branch (it is easy to forget this step!)
$ git checkout master
# get "information" from the master branch in the upstream repository
# (aka qgis/QGIS-Documentation's repository)
$ git fetch upstream master
# merge update from upstream/master to the current local branch
# (which should be master, see step 1)
$ git merge upstream/master
# update **your** remote repository (aka <YourName>/QGIS-Documentation)
$ git push origin master
Теперь у вас есть локальный и удаленный репозитории, в которых ветка «master» обновлена до официальной ветки «master» QGIS-Documentation. Вы можете приступить к работе над своим вкладом.
Примечание
Переключитесь на ветку, если хотите внести свой вклад в выпущенную документацию.
Наряду с тестовой документацией, мы продолжаем исправлять ошибки в последней версии, что означает, что вы также можете внести свой вклад в ее развитие. Следуйте примеру кода из предыдущего раздела, заменив master
на соответствующую ветвь последней версии документации.
1.2.4. Внесите свой вклад в производство
Теперь, когда ваша базовая ветвь обновлена, вам нужно создать специальную ветвь, в которую вы добавите свой вклад. Всегда работайте на ветви, отличной от базовой! Всегда!
# Create a new branch
$ git checkout -b myNewBranch
# checkout means go to the branch
# and -b flag creates a new branch if needed, based on current branch
# Let's check the list of existing branches (* indicates the current branch)
$ git branch
master
release_2.18
...
* myNewBranch
# You can now add your contribution, by editing the concerned file(s)
# with any application (in this case, vim is used)
$ vim myFile
# once done
$ git add myFile
$ git commit
Несколько слов о командах commit/push:
старайтесь вносить только одно изменение (атомарное изменение), т. е. решайте только одну проблему
постарайтесь тщательно объяснить, что вы изменили, в названии вашего коммита и в описании. Первая строка является названием и должна начинаться с заглавной буквы и иметь длину 80 символов, не заканчиваться точкой «.». Будьте лаконичны. Ваше описание может быть длиннее, заканчиваться точкой «.» и содержать гораздо больше деталей.
Используйте символ «#» с номером для ссылки на проблему. Если вы исправили проблему, добавьте префикс «Fix»: ваша фиксация закроет проблему.
Теперь, когда ваши изменения сохранены и зафиксированы в локальной ветке, вам необходимо отправить их в удаленный репозиторий, чтобы создать запрос на слияние:
$ git push origin myNewBranch
1.2.6. Очистите локальный и удаленный репозитории
После того, как ваш PR был включен в официальную документацию QGIS, вы можете удалить свою ветвь. Если вы часто работаете таким образом, через несколько недель у вас накопится много ненужных веток. Поэтому поддерживайте чистоту своего репозитория следующим образом:
# delete local branch
$ git branch -d myNewBranch
# Remove your remote myNewBranch by pushing nothing to it
$ git push origin :myNewBranch
И не забудьте обновить ветку «master» в вашем локальном репозитории!
1.3. Дополнительная литература
Помимо веб-интерфейса Github и командных инструментов git, описанных выше, существуют также GUI-приложения, которые можно использовать для создания и управления своими вкладами в документацию.
Когда изменения в пул-реквесте конфликтуют с недавними изменениями, отправленными в целевую ветвь, конфликты необходимо разрешить, прежде чем будет возможна слияние:
Если конфликт касается нескольких конкурирующих строк, на странице запроса на слияние GitHub доступна кнопка Разрешить конфликты. Нажмите кнопку и разрешите проблему, как описано в разделе «Разрешение конфликта слияния на GitHub <https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github>»_.
Если конфликт связан с переименованием или удалением файлов, то вам нужно будет разрешить конфликт с помощью командной строки git. Обычно сначала необходимо перебазировать свою ветку на целевую ветку с помощью команды «git rebase targetBranch» и устранить обнаруженные конфликты. Подробнее читайте в разделе «Устранение конфликта слияния с помощью командной строки <https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line>»_.
Иногда в конце процесса корректуры вы можете получить изменения, разбитые на несколько коммитов, которые не всегда оправданы. Командная строка Git поможет вам сжать эти коммиты до меньшего количества и более значимых сообщений коммитов. Некоторые подробности в Использование git rebase в командной строке