Подпись под сделанной работой


В эпоху ремесленничества каждый мастер ставил клеймо на своей работе: на ювелирных украшениях, часах, обуви и т.д. Производство таких вещей было нелёгким делом, потому что труд был высококвалифицированным, требовал много времени и иногда включал “ноухау” мастера. Клейма были уникальными и по ним даже спустя много времени можно было установить имя мастера. Очевидно, что если мастер оставлял под сделанной работой своё имя, то ему не стыдно было за эту работу.

А что в наше время? В кустарном производстве ничего не поменялось: ювелиры, обувных дел мастера, художники и писатели всё так же подписывают и ставят клейма на своей работе.

А в современных профессиях подпись под своей работой пока не так популярна.

Имена людей, принявших участие в проекте студии Артемия Лебедева, стоят на странице этого проекта на сайте. Например проект по дизайну новой карты московского метрополитена:

Имена людей, принявших участие в разработке Adobe Lightroom, можно найти в меню About программы:

И помимо компании Adobe такой практики похоже больше ни у кого нет (напишите мне, если это не так).

В среде разработчиков принято подписывать свои коммиты с помощью тега “Signed-Off-by:", который подтверждает, что вы сами написали патч или имеете право передавать его как патч с открытым исходным кодом. То есть следуете Developer’s Certificate of Origin, текст которого можно посмотреть на developercertificate.org. Например:

 Signed-off-by: Magnus Enger <magnus@...>
    Works as advertised. No warning about "defined(%hash) is deprecated"
    under perl v5.10.1.

позднее стали использовать тег для указания людей, которые тестировали патч:

Signed-off-by: Magnus Enger <magnus@...>
Works as advertised. No warning about "defined(%hash) is deprecated"
under perl v5.10.1.

Потом люди стали использовать появились ещё теги, чтобы указать имена людей и их вклад:

  • Reported-by: используется, чтобы указать имя человека, который сообщил о проблеме, которую патч исправляет.
  • Acked-by: используется, чтобы указать имя человека, который является ментейнером той части проекта, для которой применяется патч.
  • Reviewed-by: используется, чтобы указать имя человека, который сделал инспекцию кода патча.
  • Tested-by: используется, чтобы указать имя человека, который убедился, в том, что патч имеет желаемый эффект.

Ну и конечно никто вам не запрещает добавить свой тег: “Co-authored-by”, “Thanks-to:", “Based-on-patch-by:” или “Mentored-by:". Главное не увлекаться. Например коммит из QEMU:

 qapi: Fix code generation with Python 3.5

Recent commit 3e7fb58 "qapi: Fix code generation for empty modules"
modules" switched QAPISchema.visit() from

    for entity in self._entity_list:

effectively to

    for mod in self._module_dict.values():
        for entity in mod._entity_list:

Visits in the same order as long as .values() is in insertion order.
That's the case only for Python 3.6 and later.  Before, it's in some
arbitrary order, which results in broken generated code.

Fix by making self._module_dict an OrderedDict rather than a dict.

Fixes: 3e7fb58
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Thomas Huth <thuth@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: BALATON Zoltan <balaton@eik.bme.hu>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20200116202558.31473-1-armbru@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Обычно такие теги называют коммит-трейлеры и для самых популярных на сайте kernel.org описаны соглашения об их использовании. Трейлеры можно добавлять вручную в текст коммита, но при частом применении это неудобно. Гораздо удобнее сделать алиасы для git:

[alias]
; Generic aliases
trailer-add = "!f(){ GIT_EDITOR=\"git interpret-trailers --trailer='$1: $2' --in-place\" git commit --amend; }; f"
trailer-add-me = "!f() { git trailer-add \"$1\" \"$(git config user.name) <$(git config user.email)>\"; }; f"

; Specific aliases to avoid mistyping the token part (the part before ':')
co-authored-by = "!git trailer-add Co-authored-by"
co-authored-by-me = "!git trailer-add-me Co-authored-by"

Использование выглядит так:

git trailer-add Tested-by "Yoda <yoda@dagobah.planet>"
git trailer-add-me Reported-by
git co-authored-by "Han Solo <han.solo@millennium.ship>"
git co-authored-by-me

Чтобы добавить трейлеры для нескольких коммитов (X - количество коммитов):

git rebase -x 'git trailer-add "Thanks-to:" "Foo Bar <foo@bar.com>"' HEAD~X
Метки: softwaretesting