SetFork Docs

Доступ по git

Каждый список — git-репозиторий: клонируйте, правьте list.json, пушьте, ветвитесь.

За каждым списком SetFork стоит настоящий git-репозиторий, доступный по smart HTTP. Всё, что умеет git — CLI, VS Code, CI — работает со списками напрямую.

Клонирование

Публичные списки клонируются анонимно:

git clone https://setfork.com/{owner}/{slug}.git

Для приватных списков и черновиков нужен API-токен в качестве пароля (имя пользователя — любое):

git clone https://anything:sf_YOUR_TOKEN@setfork.com/you/private-list.git

Что внутри

В репозитории лежит list.json — каноническое представление списка (заголовок, описание, теги, тип и блоки: шаги, текст, опросы, тесты и другие). Каждая опубликованная версия — это один коммит, поэтому git log показывает историю версий, а git diff — что изменилось между версиями.

Push

Для push нужен токен со скоупом write; вы должны быть владельцем или коллаборатором.

# edit list.json, then:
git commit -am "tighten the rollback steps"
git push

Push в ветку по умолчанию проецируется обратно в платформу: создаётся новая версия списка — ровно так же, как если бы вы отредактировали и опубликовали её в интерфейсе.

Ветки и правки

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

git switch -c sharper-steps
git push -u origin sharper-steps

Ветку можно превратить в предложение (аналог pull request), и владелец сможет её влить — вместе с разрешением конфликтов, если список ушёл вперёд с момента, когда ваша ветка отделилась. Ветки, вкладки предложения и слияние в интерфейсе — в разделе Совместная работа.

Предложить правку не открывая браузер

Обычный push создаёт ветку — черновик, который никому не предъявлен. Чтобы сразу предъявить правку, пушьте в refs/for/main:

git switch -c sharper-steps
# правите list.json, коммитите
git push origin HEAD:refs/for/main
remote: SetFork: change accepted, the suggestion will appear on the list page

Предложение появится на странице списка, владелец получит уведомление. Ветка черновика вам для этого не нужна: коммиты уедут в вашу личную ветку внутри списка.

Повторный push в refs/for/main — новая ревизия того же предложения, а не второе предложение. Поправили по замечаниям, отправили снова — обсуждение продолжается на том же месте.

Отсюда одно ограничение: одновременно предъявленное предложение к списку у вас одно. Нужно второе — отправьте обычную ветку и откройте предложение в интерфейсе.

Приём знаком тем, кто работал с Gerrit; main — единственная поддерживаемая база.

Что можно из терминала, а что нет

МожноТолько в интерфейсе или через MCP
Клонировать, тянуть, смотреть историю и диффыРевью и вердикты по предложению
Пушить версии и веткиСлияние предложения, разрешение конфликтов
Предъявлять правку (refs/for/main)Релизы и их описания
Ставить локальные теги, ветвиться, rebase у себяНастройки списка и зеркала
Скачивать список одним файлом (bundle)Обсуждения, задачи, звёзды

Всё, что живёт в git-объектах, доступно из терминала. Всё, что вокруг них, — надстройки: они хранятся в базе, а не в репозитории, и работают через интерфейс или MCP-сервер.

Рецепты

История версий. Каждая версия — коммит с тегом vN:

git log --oneline --decorate     # что менялось и когда
git show v3                      # версия целиком
git diff v3 v4 -- list.json      # что изменилось между версиями

Проверка перед отправкой — то же, что проверит сервер:

git ls-tree -r --name-only HEAD   # только README.md, list.json, .gitattributes
python -m json.tool list.json     # канон обязан быть валидным JSON

CI. Кэшируйте клон между прогонами: git-эндпоинты ограничены по частоте запросов на IP, и агрессивный CI упрётся в лимит.

git clone --depth 1 https://anything:$SF_TOKEN@setfork.com/you/list.git

Границы

  • Только HTTPS. Доступа по SSH нет: токен покрывает те же сценарии, включая VS Code и CI.
  • В дереве ровно три файлаREADME.md, list.json и .gitattributes. Лишний файл push не примет и назовёт его: содержимое списка живёт в list.json, README.md генерируется из него и правится только через него.
  • main защищена от удаления и переписывания истории. Ветки-черновики можно перезаписывать свободно.
  • Пушить в список могут владелец и соавторы. Предложить правку со стороны сейчас можно через интерфейс или MCP.
  • Размер. Есть потолок на один push и на репозиторий целиком; для списков из текста они недостижимы, но большие вложения туда класть не нужно — картинки живут отдельно.

Зеркало на внешней фордже

Список можно автоматически пушить в репозиторий на GitHub или GitLab — как витрину и резервную копию. Настройка и токены — в разделе Зеркало в GitHub/GitLab.

На этой странице