Changes between Version 29 and Version 30 of ru/WorkingGuideLines


Ignore:
Timestamp:
04/25/10 13:56:08 (14 years ago)
Author:
andrew_b
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ru/WorkingGuideLines

    v29 v30  
    1414Для облегчения процесса создания тикетов здесь приводятся некоторые рекомендации. 
    1515 
    16    * Если вы хотите быть ответственным за тикет, то просто установите себя владельцем (owner) тикета и поменяйте статус тикета на 'accepted' (принят). Теперь вы должны наблюдать за тикетом - есть патч или нет патча. В обоих случаях вы должны создать ветку (branch) для последующей работы в ней. 
    17    * Патчи с исправлениями разрешено применять только к последней стабильной ветке. Эти ветки называются: mc-X.Y (например: mc-4.6). Патчи с новыми возможностями и реструктуризацией (рефакторингом) недопустимы в стабильных ветках - эти патчи нужно применять к основной ветке 'master'. Просьба также выбрать правильное направление (milestone) для данного тикета: для исправления выберите последнее направление от стабильной ветки (напр. 4.6.2). Для остальных патчей или пожеланий выберите направление по умолчанию (в наст. время это 4.7) 
    18    * Создайте на основе необходимой ветки другую ветку (например, для исправления создайте ветку от ветки mc-4.6). Все создаваемые ветки должны быть созданы на основе самого последнего коммита из родительской ветки. Новые ветки должны следовать правилу наименования: {{{XYZ-<здесь_некоторое_описание>}}}; где XYZ - это номер тикета; описание должно быть осмысленным и коротким, по возможности. Патчи из тикета не применяются непосредственно к родительской ветке, чтобы мы могли их обсудить и при необходимости пересмотреть. 
    19    * После создания ветки вы должны задать в поле severity значение '''review''' для того, чтобы другие разработчики смогли [http://www.midnight-commander.org/report/9 увидеть] ваш тикет как готовый к обзору и обсуждению. Если данное поле не задано в '''review''' ветка считается нестабильной и подлежит дальнейшей разработке. 
     16   * Если вы хотите быть ответственным за тикет, то просто установите себя владельцем (owner) тикета. Для этого измените статус тикета на "accepted" (принят). Теперь вы должны наблюдать за тикетом - есть патч или нет патча. В обоих случаях вы должны создать ветку (branch) для последующей работы в ней. 
     17   * Патчи с исправлениями разрешено применять только к последней стабильной ветке. Эти ветки называются: mc-X.Y (например: mc-4.6). Патчи с новыми возможностями и реструктуризацией (рефакторингом) недопустимы в стабильных ветках - эти патчи нужно применять к основной ветке (master). Просьба также выбрать правильное направление (milestone) для данного тикета: для исправления выберите последнее направление от стабильной ветки (например, 4.6.2). Для остальных патчей или пожеланий выберите направление по умолчанию (в настоящее время это 4.7). 
     18   * Создайте на основе необходимой ветки другую ветку (например, для исправления создайте ветку от ветки mc-4.6). Все создаваемые ветки должны быть созданы на основе самого последнего коммита из родительской ветки. Новые ветки должны следовать правилу наименования: {{{XYZ_<здесь_некоторое_описание>}}}; где XYZ - это номер тикета; описание должно быть осмысленным и коротким, по возможности. Патчи из тикета не применяются непосредственно к родительской ветке, чтобы мы могли их обсудить и при необходимости пересмотреть. 
     19   * После создания ветки вы должны задать в поле severity значение '''review''' для того, чтобы другие разработчики смогли [http://www.midnight-commander.org/report/9 увидеть] ваш тикет как готовый к обзору и обсуждению. Если данное поле не задано в '''review''', ветка считается нестабильной и подлежит дальнейшей разработке. 
    2020 
    2121== Руководство по обзору тикетов == 
    2222 
    23 Так же, как существует руководство по созданию тикетов, существует и руководство по обзору тикетов. 
    24    * Краткая выдержка [wiki:ru/forReviewer о ревизии кода] 
     23Так же как существует руководство по созданию тикетов, существует и руководство по обзору тикетов. 
     24   * Краткая выдержка [wiki:ru/forReviewer о ревизии кода]. 
    2525   * Список тикетов, которые необходимо просмотреть, находится по адресу: http://www.midnight-commander.org/report/9. 
    26    * Вы можете просмотреть и протестировать патч, просто переключившись на ветку для этого тикета (но более правильно - провести слияние (merge) ветки с той веткой, для которой он предназначен, и тестировать этот конечный результат): 
     26   * Вы можете просмотреть и протестировать патч, просто переключившись на ветку, созданную для этого тикета (но более правильно - провести слияние (merge) ветки с той веткой, для которой он предназначен, и тестировать этот конечный результат): 
    2727{{{ 
    2828 $ # Упрощенный вариант тестирования: 
     
    4343      * код делает то, что должен делать (что было задекларировано в комментарии к патчу)? 
    4444      * добавляет ли код новые баги (ошибки)? 
    45    * Если патч вам нравится (вы не нашли багов и согласны с идеей в патче), то вы должны добавить добавить свой голос в поле голосования за принятие изменения (Votes for changeset) в формате {{{vote-<login>}}}, где логин - это ваш логин в Trac. Если же патч не совсем безгрешный, то вы должны заменить значение поля severity с '''review''' на  '''rework''' и задать ключевым словом характер необходимых изменений: 
     45   * Если патч вам нравится (вы не нашли багов и согласны с идеей в патче), то вы должны добавить добавить свой голос в поле голосования за принятие изменения (Votes for changeset) в формате {{{<login>}}}, где логин - это ваш логин в Trac. Если же патч не совсем безгрешный, то вы должны заменить значение поля severity с '''review''' на  '''rework''' и задать ключевым словом характер необходимых изменений: 
    4646      * если необходимо просто "почистить" патч (убрать лишние пробелы, повставлять отступы и т. д.), то добавьте ключевое слово '''cleanup'''; 
    4747      * если в в патче присутствуют ошибки (или патч является "хаком"), то необходимо добавить ключевое слово '''rework'''; 
    4848      * если в патче присутствуют кардинальные изменения, сделающие master несовместимым со стабильной веткой, то такие тикеты должны быть заморожены до момента выпуска релиза на основе ветки master (и перед созданием новой стабильной ветки). Такие тикеты должны быть помечены ключевым стовом '''frozen'''. 
    49    * В настоящее время необходимы голоса двух разработчиков, чтобы патч был применён к родительской ветке (либо к стабильной ветке, либо к "master"). Если кто-либо вторым добавляет свой голос, то ему необходимо также изменть значение поля severity на '''approved''' (утверждено). 
     49   * В настоящее время необходимы голоса двух разработчиков, чтобы патч был применён к родительской ветке (либо к стабильной ветке, либо к "master"). Если кто-либо вторым добавляет свой голос, то ему необходимо также изменить значение поля severity на '''approved''' (утверждено). 
    5050   * Голосование всегда производится за последний патч в ветке. 
    5151   * В ходе обсуждения в тикете либо в ходе просмотра патчей разработчики могут убирать свои голоса при возникновении каких-либо проблем. 
     
    5555Для публикации ветви можно воспользоваться утилитой [http://git-wt-commit.rubyforge.org/git-publish-branch git-publish-branch] 
    5656 
    57  Примерный сценарий создания бранча можно представить в виде последовательности шагов: 
     57Примерный сценарий создания бранча можно представить в виде последовательности шагов: 
    5858{{{ 
    5959  $ git checkout master                // переключение на ветвь "master" 
     
    6161  $ git checkout -b 123_branch_name    // создание локального бранча 
    6262}}} 
    63  Далее необходимо внести изменения в исходные тексты и закоммитить изменения. 
     63Далее необходимо внести изменения в исходные тексты и закоммитить изменения: 
    6464{{{ 
    65   $ git commit file.1 file.2 file.3    // фиксация изменений 
     65  $ git add file.1 file.2 file.3       // указание изменённых файлов 
     66  $ git commit                         // фиксация изменений 
    6667  $ git-publish-branch                 // публикация ветви  
    6768}}} 
     
    6970== Руководство по применению патчей == 
    7071 
    71    * Владелец (ответственный) тикета теперь может внести исправления (находящиеся в ветке {{{XYZ-<здесь_некоторое_описание>}}}) в родительскую ветку.  Если исправления были багфиксингом, то они должны примениться к стабильной ветке (mc-X.Y) 
    72    * В этом случае (исправление на стабильную ветку) изменения считаются утерянными относительно ветки 'master'. Пожалуйста, '''НИКОГДА(!!!)''' не производите перебазирование (rebase) стабильной ветки относительно "master", чтобы объединить исправления! 
     72   * Владелец (ответственный) тикета теперь может внести исправления (находящиеся в ветке {{{XYZ_<здесь_некоторое_описание>}}}) в родительскую ветку.  Если исправления были багфиксингом, то они должны примениться к стабильной ветке (mc-X.Y). 
     73   * В этом случае (исправление на стабильную ветку) изменения считаются утерянными относительно ветки "master". Пожалуйста, '''НИКОГДА(!!!)''' не производите перебазирование (rebase) стабильной ветки относительно "master", чтобы объединить исправления! 
    7374   * Обязательно в первом описании коммита указывайте номер тикета в формате #XXX (# - обязательный символ), относительно которого был создан бранч, примерно так: 
    7475{{{ 
     
    8081   * После первой строки описания коммита добавьте дополнительный перенос строки. 
    8182 
    82    В тривиальном случае перед вливанием в master можно произвести объединение нескольких коммитов. Примерно так: 
     83В тривиальном случае перед вливанием в master можно произвести объединение нескольких коммитов. Примерно так: 
    8384{{{ 
    8485 $ git rebase -i HEAD~4  //если коммитов было 4 
     
    8990}}} 
    9091 
    91   Пример слияния с master: 
     92Пример слияния с master: 
    9293{{{ 
    9394 $ git checkout master              // переключение на ветвь "master" 
     
    99100}}} 
    100101 
    101   Далее: 
     102Далее: 
    102103{{{ 
    103104 $ git merge --log --no-ff 123_branch_name  // слияние с "master" той ветви, которую необходимо слить 
     
    107108  * ключ --no-ff позволяет сгенерировать коммит слияния даже в том случае, если ветвь является дочерней от вершины родителя (по нему проще отследить, какие патчи были сделаны в рамках данного тикета). Этот ключ значительно упрощает понимание взаимосвязей коммитов. 
    108109 
    109   Далее: 
     110Далее: 
    110111{{{ 
    111112 $ git push origin master           // обновление данных в удаленном репозитарии 
     
    115116 
    116117   * Если слияние произошло с ошибкой (из-за конфликтов), то необходимо вручную исправить конфликты и продолжить слияние. В идеале такого было не должно. Все тикеты _крайне_ желательно проверять, предварительно смержив тестируемую ветку с той, в которую планируется её добавить; иначе в ветку попадает другой код (который в некоторых случаях не только не работает, но даже и не собирается). 
    117    * Теперь вы можете просто закрыть тикет с причиной закрытия "Fixed" (исправлено), необходимо изменить severity на '''merged''', в поле Votes нужно указать ветвь, с которой происходило слияние (например, "commited-master"/"master"). Состояние тикета автоматически меняется на "testing". 
    118    * После этого перейдите на страницу http://midnight-commander.org/timeline, скопируйте оттуда ссылку на результат слияния и добавьте ее в последнем комментарии примерно так: 
     118   * Теперь вы можете просто закрыть тикет с причиной закрытия "Fixed" (исправлено), необходимо изменить severity на '''merged''', в поле Votes нужно указать ветвь, с которой происходило слияние (например, "committed-master"/"commited-stable"). Состояние тикета автоматически изменяется на "testing". 
     119   * После этого перейдите на страницу http://midnight-commander.org/timeline (или воспользуйтесь командой {{{git log}}}), скопируйте оттуда ссылку на результат слияния и добавьте её в последнем комментарии примерно так: 
    119120{{{ 
    120121#!comment  
     
    132133Если Вы не знакомы с git, пожалуйста, ознакомьтесь с нашим небольшим [wiki:ru/GitGuideLines руководством по git]. 
    133134 
    134 С описанием процесса выпуска релизов продукта можно ознакомиться [wiki:ru/ReleaseProcess здесь] 
     135С описанием процесса выпуска релизов продукта можно ознакомиться [wiki:ru/ReleaseProcess здесь].