No description
  • Go 98.8%
  • Just 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-12 08:00:43 +00:00
cmd/workspace fest: add version sub-command 2026-07-25 14:03:04 +02:00
internal feat: 'status' also shows repos not in their default branch 2026-08-05 08:53:05 +02:00
.gitignore initial commit 2026-07-25 14:03:03 +02:00
.gitlab-ci.yml Configure Secret Detection in .gitlab-ci.yml, creating this file if it does not already exist 2026-07-25 11:57:59 +00:00
.golangci.yml feat: add concurrency 2026-07-25 14:03:03 +02:00
go.mod chore: bump dependencies 2026-08-06 09:04:04 +02:00
go.sum feat: ws status 2026-07-25 14:03:03 +02:00
justfile fest: add version sub-command 2026-07-25 14:03:04 +02:00
README.md docs: update README.md 2026-08-12 08:00:43 +00:00

workspace

workspace (ws) is a command-line tool for managing multiple git repositories that live together inside a single workspace directory. Instead of cd-ing into every repo one by one, ws lets you operate on all of them at once — for example, running ws status to see the git status of every repository in your workspace that has changed.

Installation

go install gitlab.com/doertydoerk/workspace/cmd/workspace@latest

Or build from source:

git clone https://gitlab.com/doertydoerk/workspace.git
cd workspace
just install       # installs `ws` into $GOPATH/bin, with version info stamped in

just build/just install stamp ws --version with the current git tag, commit, and build date via -ldflags. Plain go build/go install skip that and report dev.

Usage

ws help
ws --version

Commands

  • ws scan — walks the current directory for git repositories and records them in a .workspace manifest file.
  • ws status — shows the git status (path, branch, changes) of every repo in the manifest that isn't clean, plus any repo that isn't checked out on its default branch (e.g. main).
  • ws update — runs git pull --rebase --autostash on every repo in the manifest, preserving uncommitted local changes automatically.
  • ws revert — irreversibly discards all uncommitted changes (staged, unstaged, and untracked) in every repo that isn't clean, after listing the affected repos and asking for confirmation (skip with --yes).
  • ws version (or ws --version) — prints the version, commit, and build date.

Project layout

cmd/workspace/    # main package / CLI entrypoint
internal/cmd/     # cobra commands and application logic (not importable outside this module)

License

MIT.