Публикация чистой копии

Почему публичный репозиторий может начинаться с одного коммита, и два скрипта, которые делают такую копию.

Почему один коммит

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

1. Проверьте дерево

node scripts/public-tree-check.js

Скрипт читает каждый отслеживаемый файл и ищет то, чему не место в открытом доступе: личный адрес почты, ссылку на закрытый рабочий сеанс, строку о том, кто набирал коммит, путь внутри чьей-то домашней папки, адрес внутри частной сети, ключ, файл, которому нельзя быть в репозитории. Он ничего не меняет; при находке выходит с кодом 1 и прячет середину каждой находки (--show показывает целиком).

Закрытые значения, которых скрипт угадать не может (адрес частного сервера, имя, название закрытого пака нод), записываются в файл вне репозитория, по одному в строке (# начинает комментарий):

node scripts/public-tree-check.js --values /home/you/private-values.txt
# или
PUBLIC_TREE_PRIVATE_VALUES=/home/you/private-values.txt node scripts/public-tree-check.js

--dir ПАПКА проверяет другую папку. tests/unit/publicTreeCheck.test.ts запускает проверку при каждом прогоне тестов.

2. Сделайте копию

scripts/make-public-snapshot.sh ПАПКА "Ваше имя" <ваш-noreply-адрес-GitHub>
  • ПАПКА это пустая или новая папка (первая публикация) или уже существующий клон публичного репозитория (обновление: его файлы заменяются текущими и делается один новый коммит).
  • Адрес автора должен быть адресом GitHub «noreply», чтобы в публичную историю не попал личный адрес. GitHub показывает ваш в Settings ▸ Emails.
  • Файлы с пометкой export-ignore в .gitattributes в копию не попадают (например, исследовательские заметки команды).
  • Скрипт работает только с чистым рабочим деревом (копия делается из последнего коммита), сначала проверяет дерево и ещё раз проверяет копию перед её коммитом; PUBLIC_TREE_PRIVATE_VALUES используется оба раза.

Чего он никогда не делает: не отправляет (push) и не обращается к GitHub. Он готовит папку, делает один коммит и говорит, что делать дальше; вы смотрите и отправляете сами.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/dev/Publishing-A-Clean-Copy.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.