Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 8390 - Найти способ запрета публикации merge-коммитов   Make a simular bug
Summary: Найти способ запрета публикации merge-коммитов
Status: CLOSED FIXED
Alias: None
Product: Girar
Classification: Свободные проекты (Open source projects)
Component: Girar services (show other bugs)
Version: 0.7
Hardware: PC All
: P4 minor
Target Milestone: ---
Deadline: 2013-04-20
Assignee: Евгений Синельников
QA Contact: Vitaly Lipatov
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
In work:
Reported: 2012-04-16 17:23 MSK by Vitaly Lipatov
Modified: 2014-02-10 13:10 MSK (History)
4 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2012-04-16 17:23:08 MSK
При работе с общим репозиторием очень легко возникает ситуация, когда
человек, выполняя обновления не через git rebase, получает у себя merge,
при отсутствии какого-либо конфликта.

У нас есть команда gpull, которая по умолчанию выполняет git pull --ff-forward-only, запрещая создания merge (и выполняет rebase если вызвать как gpull -r).

Мы постараемся её всем привить, но хотелось бы запрета на стороне сервера:
гит-сервер должен отклонять пуш, если в списке коммитов есть merge.
Comment 1 Vitaly Lipatov 2013-04-04 17:30:44 MSK
Женя, ты возьмёшься провести необходимые исследования и сделать хук для git или патч, в крайнем случае?
Надо бы решить эту задачу, чтобы не позволять случайных ошибок.
Comment 2 Евгений Синельников 2013-04-04 22:00:48 MSK
Отладил скрипт взяв варианты проверки из примера:
http://stackoverflow.com/questions/5488442/pre-receive-hook-on-server-side-that-refuse-any-push-to-master-which-has-any-non

Осталось внести изменения и собрать.
Comment 3 Евгений Синельников 2013-04-07 00:34:13 MSK
Сделал сборку 0.3-alt1.eter46.M60P.47.Build1 для p6 (0.3-alt1.eter47 для сизифа). Обновил git.eter и git.office. Нужно проверить, как всё работает.

Для управления проверки и отклонения пакетов коммитов с "мёрджами" добавлена новая команда:
$ ssh git.eter help|grep merges
merges <path to git repository> [<value>]

$ ssh git.eter init-db test-merges
girar-init-db:  /people/sin/packages/test-merges.git
$ ssh git.eter merges test-merges no

$ git push git.eter:packages/test-merges master
Counting objects: 7282, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2799/2799), done.
Writing objects: 100% (7282/7282), 1.06 MiB, done.
Total 7282 (delta 5015), reused 6554 (delta 4450)
remote: Merge commit detected: 52d5de9fc44b8a975fda1be0099e4a72d3fb9d78
To git.eter:packages/test-merges
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git.eter:packages/test-merges'

$ git push git.eter:packages/test-merges old
Counting objects: 3711, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1474/1474), done.
Writing objects: 100% (3711/3711), 571.57 KiB, done.
Total 3711 (delta 2596), reused 3211 (delta 2220)
remote: Merge commit detected: a878a0213fcde08ec0de19b71e64f44faaf13c49
To git.eter:packages/test-merges
 ! [remote rejected] old -> old (pre-receive hook declined)
error: failed to push some refs to 'git.eter:packages/test-merges'

$ ssh git.eter merges test-merges yes

$ git push git.eter:packages/test-merges old
Counting objects: 3711, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1474/1474), done.
Writing objects: 100% (3711/3711), 574.96 KiB, done.
Total 3711 (delta 2597), reused 3211 (delta 2220)
remote: girar-sendmail: email notification about `refs/heads/old' update sent.
remote: Repacking repository... done
remote: Updating committer date cache... done
To git.eter:packages/test-merges
 * [new branch]      old -> old

$ ssh git.eter merges test-merges no

$ git push git.eter:packages/test-merges master:old
Counting objects: 3681, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1326/1326), done.
Writing objects: 100% (3572/3572), 516.66 KiB, done.
Total 3572 (delta 2414), reused 3348 (delta 2229)
remote: Merge commit detected: 52d5de9fc44b8a975fda1be0099e4a72d3fb9d78
To git.eter:packages/test-merges
 ! [remote rejected] master -> old (pre-receive hook declined)
error: failed to push some refs to 'git.eter:packages/test-merges'
Comment 4 Vitaly Lipatov 2013-04-07 01:00:58 MSK
(В ответ на comment #3)
> Сделал сборку 0.3-alt1.eter46.M60P.47.Build1 для p6 (0.3-alt1.eter47 для
> сизифа). Обновил git.eter и git.office. Нужно проверить, как всё работает.
> 
> Для управления проверки и отклонения пакетов коммитов с "мёрджами" добавлена
> новая команда:
> $ ssh git.eter help|grep merges
> merges <path to git repository> [<value>]
Для /projects у нас настроено shared по умолчанию для новых. Можно ли сделать для новых проектов в /projects отключенное разрешение на merges?
Comment 5 Евгений Синельников 2013-04-07 01:32:03 MSK
Готово: 0.3-alt1.eter46.M60P.47.Build2 (0.3-alt1.eter47.Build1)
Comment 6 Vitaly Lipatov 2013-09-25 20:19:56 MSK
Не понимаю, что означает этот вывод:
$ ssh git.eter merges /projects/korinf/korinf.git
default
Comment 7 Евгений Синельников 2014-02-10 06:11:59 MSK
$ ssh git.eter merges girar
no (by default)