Анонимный код на GitHub: обзор инструмента gitMask

Логотип gitMask

Опенсорс-разработчик Джейсон Кулатунга (Jason Kulatunga) представил проект gitMask, позволяющий программистам делать свои коммиты в GitHub анонимными.

Last login: Sat Aug 5 2017 23:34:14 on ttys000
➜ ~ git clone https://github.com/AnalogJ/gitmask.git
➜ ~ git checkout -b feat_branch
➜ ~ echo "update readme" >> README.md
➜ ~ git commit -am "Commits will be squashed and messages overwritten"
➜ ~ git bundle create commits.bundle origin/master..feat_branch
➜ ~ curl -L -X PUT --upload-file commits.bundle https://git.gitmask.com/v1/bundle/github.com/AnalogJ/gitmask/master

# Gitmask обработает ваши «бандлы» в фоновом режиме.
# В течение 30 секунд в целевом репозитории откроется новый pull request.
➜ ~ 

Зачем это нужно?

  • Приватность. GitHub работает под эгидой «социального кодинга». Это значит, что каждый коммит разработчика виден всем;
  • Спорные проекты. Если вы считаете, что DICSS — это забавно, это совсем не значит, что вы хотите, чтобы ваш босс знал об этом.

Как это работает?

Всё, что требуется от разработчика — это создать git bundle и загрузить его на gitMask. «Бандлы» git – это упаковочные бинарные файлы для безопасной передачи контента, который в обычной ситуации отправляется по сети командой git push, через любые электронные ресурсы. Создать bundle позволяет команда git bundle create.

git bundle help
usage: git bundle create <file> <git-rev-list args>
   or: git bundle verify <file>
   or: git bundle list-heads <file> [<refname>...]
   or: git bundle unbundle <file> [<refname>...]

Теперь, если изменения были внесены в bitcoin/bitcoin, то для запуска анонимайзера достаточно одной команды:

curl -L -X PUT –upload-file commits.bundle
https://git.gitmask.com/v1/bundle/github.com/bitcoin/bitcoin/master

Как только код «запушен» в gitMask, из коммитов удаляется вся персональная информация: имена авторов, адреса электронной почты и временные отметки. Pull request автоматически посылается в репозиторий GitHub с внесёнными изменениями, и теперь IP — это gitMask, а автор кода — анонимный аккаунт на gitMask.