divekit snapshot

Create history-stripped research snapshots of distributed repositories

Synopsis

Create research snapshots from a Divekit distribution.

Snapshots clone the selected work repositories, remove Git history, create a single neutral initial commit, and push the result into a target GitLab group.

Privacy note: this removes commit history and commit metadata only. UUIDs, file contents, file paths, and other in-repository data are not anonymized or scrubbed.

Usage

divekit snapshot [flags]

Examples

# Snapshot all repositories into an explicit research group
divekit snapshot -d ST2M4 --target-group research/course-2026

# Preview without creating subgroups, projects, clones, or pushes
divekit snapshot -d ST2M4 --target-group research/course-2026 --dry-run

# Snapshot selected UUIDs and overwrite existing targets
divekit snapshot -d ST2M4 --uuid abc123 --uuid def456 --on-existing overwrite

Flags

--author-email string     Neutral snapshot commit author email (default "divekit@invalid.local")
      --author-name string      Neutral snapshot commit author name (default "Divekit")
      --branch string           Target branch to push (default "main")
      --commit-message string   Snapshot commit message (default "Initial snapshot")
  -d, --distribution string     Distribution name
  -n, --dry-run                 Show what would happen without cloning, creating GitLab resources, or pushing
      --label string            Snapshot label (default: local timestamp YYYYMMDD-HHMMSS)
      --name-pattern string     Target project name template (default: {{distribution}}-{{uuid}})
      --on-existing string      Existing target behavior: skip, overwrite, or fail (default "skip")
  -o, --output-dir string       Local staging output directory to keep after push
      --rate-limit float        Maximum snapshot tasks per second (unset = preset, 0 = unlimited)
  -r, --remote string           Remote repository URL (e.g. GitLab instance)
      --source-ref string       Source branch or tag to clone (default: source default branch)
      --target-group string     Target GitLab group path or ID
  -t, --token string            GitLab token or token file path (file:///...)
      --user strings            Only snapshot repositories for these usernames (repeatable)
      --uuid strings            Only snapshot repositories with these UUIDs (repeatable)
      --visibility string       Target project visibility (default "private")
  -w, --workers int             Number of concurrent snapshot workers (0 = use preset)

Inherited Flags

-l, --loglevel string   log level (debug, info, warn, error, fatal) (default "info")
      --no-index          skip project index update
      --non-interactive   run in non-interactive mode (fails if interactive input is required)
  -y, --yes               assume yes/default for all prompts (non-interactive with automatic defaults)