aboutsummaryrefslogtreecommitdiffstats
path: root/russian/devel/website/using_git.wml
blob: 603418bdd3c999c8408e386e779e87abbce8a609 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
#use wml::debian::template title="Использование git для работы с исходным кодом сайта"
#use wml::debian::translation-check translation="34e2f0a9cf645cca3f5c9829eb1244f865646448" maintainer="Lev Lamberov"

<h2>Введение</h2>

<p>Git представляет собой <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%D0%BC%D0%B8">систему
управления версиями</a>, которая помогает нескольким людям работать над одним и тем же материалом
одновременно. Каждый пользователь имеет локальную копию основного
репозитория. Локальные копии могут быть на одной и той же машине или в любом другом месте во всём мире.
Пользователи могут менять локальную копию по своему желанию, а когда изменённый материал
готов, вносить (commit) изменения и отправлять (push) их в основной
репозиторий.</p>

<p>Git не позволит отправить ваши изменения в случае, если удалённый репозиторий
содержит более новые коммиты (изменения), чем ваша локальная копия той же ветки.
В таком случае, когда имеет место конфликт, сначала загрузите и обновите вашу локальную
копию и при необходимости выполните <code>rebase</code> ваших изменений так, чтобы
они были размещены после последнего коммита.
</p>

<h3><a name="write-access">Доступ к git-репозиторию с правами на запись</a></h3>

<p>
Весь исходный код веб-сайта Debian управляется Git. Исходный код расположен
по адресу <url https://salsa.debian.org/webmaster-team/webwml/>. По умолчанию
гостевые пользователи не могут отправлять в этот репозиторий свои изменения.
Вам требуется некоторого вида разрешение для того, чтобы получить права на запись
в этот репозиторий.
</p>

<h4><a name="write-access-unlimited">Unlimited write access</a></h4>

<p>
Если вам нужен неограниченный доступ к репозиторию с правами на запись (например, вы
собираетесь часто вносить правки), то попросите об этом через
веб-интерфейс <url https://salsa.debian.org/webmaster-team/webwml/> после выполнения
входа в платформу Debian Salsa.
</p>

<p>
Если вы являетесь новичком в работе над веб-сайтом Debian и пока не имеете опыта,
то до запроса доступа также отправьте сообщение по адресу
<a href="mailto:debian-www@lists.debian.org"> debian-www@lists.debian.org</a>,
в котором укажите информацию о себе. В своём сообщении
напишите что-нибудь полезное, например, то, над каким языком или над какой частью
веб-сайта вы собираетесь работать, а также кто может за вас поручиться.
</p>

<h4><a name="write-access-via-merge-request">Запись в репозиторий через запросы слияний</a></h4>
<p>
Если вы не собираетесь получать неограниченный доступ с правами на запись в этому
репозиторию или вы не можете этого сделать, то мы всегда можете отправить запрос на
слияние ваших изменений, что позволит остальным разработчикам проверить и принять вашу
работу. Отправляйте запросы на слияние с помощью стандартной процедуры, предоставляемой
платформой Salsa GitLab через веб-интерфейс (подробности см. в
<a href="https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html">Алгоритм копирования проекта</a>
и
<a href="https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html#when-you-work-in-a-fork">When you work in a fork</a>).
</p>

<p>
Запросы слияний не отслеживается всеми разработчиками веб-сайта, поэтому они
не всегда обрабатываются во время. Если вы не уверены в том, будут ли приняты ваши
изменения, то отправьте сообщение электронной почты в список рассылки
<a href="https://lists.debian.org/debian-www/">debian-www</a>
и попросите проверить ваши правки.
</p>

<h2><a name="work-on-repository">Работа с репозиторием</a></h2>

<h3><a name="get-local-repo-copy">Получение локальной копии репозитория</a></h3>

<p>Во-первых, для работы с репозиторием вам необходимо установить git. Во-вторых,
вам нужно настроить информацию о пользователе и электронной почте (чтобы узнать о том, как это
сделать, обратитесь к общей документации git). В-третьих, вы можете
клонировать репозиторий (другими словами, сделать его локальную копию)
двумя способами.</p>

<p>При работе над webwml рекомендуется сначала зарегистрировать
учётную запись на salsa.debian.org и включить SSH-доступ git, загрузив
открытый SSH-ключ в вашу учётную запись salsa. См. <a
href="https://salsa.debian.org/help/ssh/README.md">справочные страницы
по salsa</a>, где вы найдёте дополнительную информацию о том, как это сделать. Далее, вы
можете клонировать репозиторий webwml с помощью следующей команды:</p>

<pre>
   git clone git@salsa.debian.org:webmaster-team/webwml.git
</pre>

<p>Если у вас нет учётной записи salsa, то вы можете клонировать
репозиторий по протоколу HTTPS:</p>

<pre>
  git clone https://salsa.debian.org/webmaster-team/webwml.git
</pre>

<p>Это приведёт к созданию точной локальной копии репозитория, но вы не
сможете напрямую вносить свои изменения в основной репозиторий.</p>

<p>Для клонирования всего репозитория webwml требуется загрузить около
500МБ данных, поэтому это может быть затруднительно для тех, кто имеет медленное
или нестабильное соединение. Для начала можно попробовать сделать поверхностное
клонирование с минимальной глубиной:</p>

<pre>
  git clone git@salsa.debian.org:webmaster-team/webwml.git --depth 1
</pre>

<p>После получения рабочего (поверхностного) репозитория, вы можете загрузить
остальные части и преобразовать их в полный локальный
репозиторий: </p>

<pre>
  git fetch --deepen=1000 # загрузить ещё 1000 коммитов
  git fetch --unshallow   # загрузить все отсутствующие коммиты и преобразовать репозиторий
</pre>

<h4><a name="partial-content-checkout">Частичная выгрузка</a></h4>

<p>Вы можете создать выгрузку только для некоторого подмножества страниц следующим образом:</p>

<pre>
   $ git clone --no-checkout git@salsa.debian.org:webmaster-team/webwml.git
   $ cd webwml
   $ git config core.sparseCheckout true
   В webwml создайте файл .git/info/sparse-checkout с приблизительно следующим содержимым
   (Если вам нужны только базовые файлы, английский, каталонский и испанский языки):
      /*
      !/[a-z]*/
      /english/
      /catalan/
      /spanish/
   Далее:
   $ git checkout --
</pre>

<h3><a name="submit-changes">Отправка локальных изменений</a></h3>

<h4><a name="keep-local-repo-up-to-date">Поддержка локальной копии в актуальном состоянии</a></h4>

<p>Каждые несколько дней (и до того как что-то отредактировать!)
вам следует выполнять</p>

<pre>
   git pull
</pre>

<p>для загрузки изменённых файлов из репозитория.</p>

<p>
Настоятельно рекомендуется поддерживать ваш локальный рабочий git-каталог в чистом
состоянии до выполнения "git pull" и последующего редактирования. Если у вас имеются
невнесённые в коммит изменения или локальные коммиты, которые не были отправлены в
текущую ветку удалённого репозитория, то выполнение "git pull" приведёт к автоматическому
созданию коммитов слияния или даже завершится ошибкой из-за конфликта изменений.
Рекомендуется сохранять вашу незавершённую работу в другой ветке или использовать
такие команды как "git stash".
</p>

<p>Внимание: git является распределённой (а не централизованной) системой управления
версиями. Это означает, что когда вы вносите изменения (делаете коммит), они лишь сохраняются
в вашей локальной копии репозитория. Чтобы поделиться изменениями с другими, вам следует
отправить (push) их в центральный репозиторий на salsa.</p>

<h4><a name="example-edit-english-file">Пример редактирования файлов на английском языке</a></h4>

<p>
Ниже предлагается пример редактирования файлов на английском языке в репозитории исходного
кода веб-сайта. После получения локальной копии репозитория с помощью команды
"git clone" и до начала редактирования, выполните следующую
команду:
</p>

<pre>
   $ git pull
</pre>

<p>Теперь вы вносите свои правки в файлы. Затем вносите изменения в
ваш локальный репозиторий с помощью следующих команд:</p>

<pre>
   $ git add путь/к/файлам
   $ git commit -m "Ваше сообщение о коммите"
</pre>

<p>Если у вас имеется неограниченный доступ с правами на запись к удалённому репозиторию
webwml, то вы можете отправить ваши изменения напрямую в репозиторий Salsa:</p>

<pre>
   $ git push
</pre>

<p>Если у вас нет прямого доступа с правами на запись в репозиторий webwml, то отправьте
ваши изменения в виде запроса слияния. Такая возможность предоставляется платформой
Salsa GitLab через веб-интерфейс, либо попросите помощи у других разработчиков.
</p>

<p>Таков весьма краткий и упрощённый обзор того, как использовать git для работы с
исходным кодом веб-сайта Debian. Дополнительную информацию о git можно найти
в документации по git.</p>

<h4><a name="closing-debian-bug-in-git-commits">Закрытие ошибок Debian через коммиты git</a></h4>

<p>
Если вы добавите <code>Closes: #</code><var>nnnnnn</var> в сообщение о вашем
коммите, то ошибка с номером <code>#</code><var>nnnnnn</var> будет автоматически
закрыта в тот момент, когда вы отправите ваши изменения. Точная форма сообщения описана
<a href="$(DOC)/debian-policy/ch-source.html#id24">в Политике Debian</a>.</p>

<h4><a name="links-using-http-https">Ссылки HTTP/HTTPS</a></h4>

<p>Многие веб-сайты Debian поддерживают SSL/TLS, поэтому там, где это возможно,
используйте ссылки HTTPS. <strong>Тем не менее</strong>, некоторые
веб-сайты Debian/DebConf/SPI/другие не имеют поддержки HTTPS
или используют сертификаты SPI (которые не входят в число доверенных во всех браузерах).
Для того, чтобы не создавать проблемы для пользователей, не использующих Debian, не
используйте для таких сайтов ссылки HTTPS.</p>

<p>Репозиторий git будет отклонять коммиты, содержащие ссылки HTTP
на веб-сайты Debian, поддерживающие HTTPS или содержащие ссылки HTTPS для
веб-сайтов Debian/DebConf/SPI, о которых известно, что они не поддерживают
HTTPS, либо используют сертификаты, заверенные только SPI.</p>

<h3><a name="translation-work">Работа над переводами</a></h3>

<p>Переводы всегда должны быть в актуальном состоянии и должны соответствовать
оригинальному файлу на английском языке. Заголовок "translation-check" в переведённых
файлах используется для отслеживания того, на какой версии файла на английском языке
основывается текущий перевод. Если вы изменяете переведённые файлы, то вам следует обновить и
заголовок translation-check так, чтобы он соответствовал хэшу коммита git
соответствующего изменения оригинального файла (обычно на английском языке).
Узнать хэш можно с помощью команды</p>

<pre>
$ git log путь/к/файлу/оригинала
</pre>

<p>Если вы создаёте новый перевод файла, то используйте сценарий <q>copypage.pl</q>,
который создаст шаблон для вашего языка, включающий правильный
заголовок перевода.</p>

<h4><a name="translation-smart-change">Изменение перевода с помощью smart_change.pl</a></h4>

<p><code>smart_change.pl</code> представляет собой сценарий, созданный для облегчения
одновременного обновления оригинальных файлов и их переводов. Имеются
два способа использования этого сценария, которые зависят от того, какие изменения вы вносите.</p>

<p>Чтобы использовать <code>smart_change</code> только для обновления заголовков translation-check
в случае, если вы работаете над файлами вручную, поступайте следующим образом:</p>

<ol>
  <li>Внесите изменения в оригинальный файл или файлы, сделайте коммит</li>
  <li>Обновите переводы</li>
  <li>Запустите smart_change.pl &mdash; он подхватит изменения и обновит
    заголовки в переведённых файлах</li>
  <li>Проверьте изменения (напр., с помощью "git diff")</li>
  <li>Сделайте коммит с изменениями переводов</li>
</ol>

<p>Также вы можете использовать smart_change с регулярным выражением для того,
чтобы сделать несколько изменений в разных файлах за один раз. Это можно сделать следующим образом:</p>

<ol>
  <li>Запустите <code>smart_change.pl -s s/ПЕРВОЕ/ВТОРОЕ/ оригинал1 оригинал2 ...</code></li>
  <li>Проверьте изменения (напр., с помощью <code>git diff</code>)
  <li>Сделайте коммит изменений оригинальных файлов</li>
  <li>Запустите <code>smart_change.pl оригинал1 оригинал2</code>
    (то есть, <strong>без регулярного выражения</strong>); это приведёт к
    обновлению заголовков в переведённых файлах</li>
  <li>Наконец сделайте коммит с изменениями переводов</li>
</ol>

<p>Теперь требуется немного больше работы, чем раньше (нужно два коммита), но
это неизбежно из-за того, что так работают хэши коммитов git.</p>

<h2><a name="notifications">Получение уведомлений</a></h2>

<h3><a name="commit-notifications">Получение уведомлений о коммитах</a></h3>

<p>Мы настроили проект webwml в Salsa так, что коммиты показываются
в IRC-канале #debian-www.</p>

<p>Если вы хотите получать уведомления по электронной почте при добавлении
коммитов в репозиторий webwml, то подпишитесь на псевдопакет <q>www.debian.org</q>
через tracker.debian.org и включите ключевое слово <q>vcs</q>.
Это можно сделать следующим образом (это нужно сделать только один раз):</p>

<ul>
  <li>Откройте веб-браузер и перейдите по адресу <url https://tracker.debian.org/pkg/www.debian.org></li>
  <li>Подпишитесь на псевдопакет <q>www.debian.org</q>. (Вы можете аутентифицироваться
      через SSO или зарегистрироваться, указав адрес электронной почты и пароль, если вы ещё
      не используете tracker.debian.org для каких-то других целей).</li>
  <li>Перейдите на страницу <url https://tracker.debian.org/accounts/subscriptions/>, затем на <q>modify
      keywords</q>, отметьте <q>vcs</q> (если оно не отмечено) и сохраните настройки.</li>
  <li>Теперь вы будете получать сообщения по электронной почте в случае, если кто-то вносит изменения
      в репозиторий webwml. Позже мы добавим другие репозитории webmaster-team.</li>
</ul>

<h3><a name="merge-request-notifications">Получение уведомлений о запросах слияния</a></h3>

<p>
Если вы хотите получать сообщения с уведомлениями при создании нового запроса
слияния, отправленного через веб-интерфейс репозитория webwml на платформе
Salsa GitLab, то вы можете изменить свои настройки уведомлений для репозитория
webwml через веб-интерфейс, следуя приведённым ниже шагам:
</p>

<ul>
  <li>Войдите в вашу учётную запись Salsa и перейдите на страницу проекта.</li>
  <li>Нажмите на иконку со звонком в верхней части домашней страницы проекта.</li>
  <li>Выберите предпочитаемый вами уровень уведомлений.</li>
</ul>

© 2014-2024 Faster IT GmbH | imprint | privacy policy