sync-kit

module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2026 License: MIT

README

sync-kit

Go-версия утилиты sync-kit от ITu-Dev

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

Решает проблему синхронизации кода когда нет доступа к git remote — упаковывает изменения в ZIP-архив с текстовыми файлами, который можно перенести любым способом.

Возможности

  • Экспорт только изменённых файлов или полного снапшота
  • Поддержка добавления, изменения, удаления и переименования файлов
  • Автоматический бэкап перед импортом
  • Определение и разрешение конфликтов
  • Интерактивный выбор файлов
  • Красивый терминальный интерфейс
  • Один бинарный файл без зависимостей (Go)

Быстрый старт

Сборка
cd /path/to/sync-kit

# Сборка для текущей платформы
make build

# Или с помощью go
go build -o build/sync-kit ./cmd/sync-kit
Установка
# Установка в $GOPATH/bin
make install

# Или скопировать бинарник
cp build/sync-kit /usr/local/bin/
Кросс-платформенная сборка
# Сборка для всех платформ
make build-all

# Отдельно по платформам
make build-linux
make build-darwin
make build-windows

Использование

Экспорт изменений
# Перейди в репозиторий
cd /path/to/my-project

# Интерактивный режим — покажет изменения и спросит что включить
sync-kit export

# Быстрый экспорт без вопросов
sync-kit q

# Полный снапшот всего проекта
sync-kit export --full

# С описанием изменений
sync-kit export -m "Фикс бага авторизации"

# Исключить файлы
sync-kit export --exclude "*.test.go" --exclude "docs/*"

# Указать путь для архива
sync-kit export -o ./my-changes.zip

Результат: создаётся файл sync_YYYYMMDD-HHMMSS.zip

Импорт изменений
# Перейди в репозиторий на другом компьютере
cd /path/to/my-project

# Посмотреть что в архиве (без изменений)
sync-kit preview ./sync_20260115.zip

# Предпросмотр — что будет сделано
sync-kit import --dry-run ./sync_20260115.zip

# Применить изменения
sync-kit import ./sync_20260115.zip

# Без создания бэкапа
sync-kit import --no-backup ./sync_20260115.zip

# Принудительно без подтверждений
sync-kit import --force ./sync_20260115.zip
История
# Показать историю синхронизаций
sync-kit history

# Очистить историю
sync-kit history --clear

Команды

Команда Описание
sync-kit export Экспорт изменений (интерактивно)
sync-kit q Быстрый экспорт без вопросов
sync-kit export --full Экспорт всего проекта
sync-kit import <file> Импорт архива
sync-kit preview <file> Просмотр содержимого архива
sync-kit history История синхронизаций
Флаги export
Флаг Описание
-f, --full Полный снапшот репозитория
-q, --quick Без интерактивных вопросов
-o, --output <path> Путь для архива
-m, --message <text> Описание изменений
--exclude <pattern> Исключить файлы (можно несколько раз)
--include <pattern> Включить только указанные файлы
Флаги import
Флаг Описание
-d, --dry-run Показать что будет сделано
--no-backup Не создавать бэкап
-f, --force Без подтверждений
--overwrite Перезаписать конфликтующие файлы

Структура архива

sync_20260115-143022.zip
├── manifest.json           # Метаданные и список операций
├── meta/
│   └── info.txt           # Человекочитаемая сводка
└── files/
    ├── src/
    │   ├── main.go.txt
    │   └── utils/
    │       └── helpers.go.txt
    └── ...
Формат manifest.json
{
  "version": "1.0",
  "created": "2026-01-15T14:30:22.000Z",
  "source": {
    "repo": "my-project",
    "branch": "feature/new-widget",
    "commit": "abc123d",
    "dirty": true
  },
  "mode": "changes",
  "message": "Описание изменений",
  "stats": {
    "added": 2,
    "modified": 3,
    "deleted": 1,
    "renamed": 1,
    "totalSize": 12345
  },
  "operations": [
    { "type": "add", "path": "src/new.go", "size": 1234, "hash": "sha256:..." },
    { "type": "modify", "path": "src/main.go", "size": 5678, "hash": "sha256:..." },
    { "type": "delete", "path": "src/old.go" },
    { "type": "rename", "from": "src/foo.go", "path": "src/bar.go", "size": 890 }
  ]
}

Автоматически исключаемые файлы

  • node_modules/, vendor/
  • .git/
  • dist/, build/, .next/, .nuxt/
  • coverage/
  • package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb, go.sum
  • .env, .env.*
  • *.zip
  • .sync-backup/, .sync-history/

Типичные сценарии

Сценарий 1: Перенос текущих изменений
# На исходном компьютере
cd ~/projects/my-app
sync-kit q
# Создан: sync_20260115-143022.zip

# Перенеси архив на другой компьютер

# На целевом компьютере
cd ~/projects/my-app
sync-kit import ./sync_20260115-143022.zip
Сценарий 2: Полная синхронизация проекта
# На исходном компьютере
sync-kit export --full -m "Полный снапшот проекта"

# На целевом компьютере
sync-kit import --force ./snapshot_20260115.zip
Сценарий 3: Выборочный экспорт
# Только файлы из internal/
sync-kit export --include "internal/**"

# Всё кроме тестов
sync-kit export --exclude "**/*_test.go"

Требования

  • Go 1.25+ (для сборки)
  • Git (в репозитории)

Разработка

# Установка зависимостей
go mod download

# Запуск в режиме разработки
make dev ARGS="export"
# или
go run ./cmd/sync-kit export

# Сборка
make build

# Тесты
make test

# Линтер
make lint

# Форматирование
make fmt

Структура проекта

sync-kit/
├── build/                # Собранные бинарники
├── cmd/
│   └── sync-kit/
│       └── main.go       # Entry point
├── internal/
│   ├── commands/         # Реализация команд
│   │   ├── export.go
│   │   ├── import.go
│   │   ├── preview.go
│   │   └── history.go
│   ├── core/             # Бизнес-логика
│   │   ├── git.go
│   │   ├── archive.go
│   │   ├── manifest.go
│   │   ├── diff.go
│   │   ├── backup.go
│   │   └── history.go
│   ├── ui/               # Терминальный интерфейс
│   │   ├── banner.go
│   │   ├── logger.go
│   │   ├── theme.go
│   │   ├── spinner.go
│   │   ├── progress.go
│   │   ├── prompts.go
│   │   ├── tree.go
│   │   └── table.go
│   ├── utils/            # Утилиты
│   │   ├── fs.go
│   │   ├── paths.go
│   │   └── filters.go
│   └── types/
│       └── types.go      # Типы данных
├── go.mod
├── go.sum
├── Makefile
└── README.md

Лицензия

MIT

Directories

Path Synopsis
cmd
sync-kit command
internal
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL