Skip to content

Generated files

What Workler creates and configures, and where.

In the main project

PathCreated byPurpose
.worklerworkler initThe rules file. Commit it.
.worktrees/workler init / workler addOne subdirectory per workspace. Never commit it.
.git/info/excludeworkler init / workler addGets a .worktrees/ line so workspaces stay invisible to git without touching your committed .gitignore. (Outside a git repo, init falls back to .gitignore.)
refs/workler/<workspace>/<branch>workler branch-syncRead-only mirrors of each workspace's local branches. Inspect with git for-each-ref refs/workler/; pruned automatically when a workspace is removed.

Git config keys (main project)

KeyValue
workler.rootThe project's own path (marks it as a workler root).
workler.namemain.

In each workspace

Each workspace under .worktrees/<name> is a normal clone, plus:

WhatValue / purpose
git config workler.rootPath of the immediate parent project — how discovery and nested workspaces find their way up.
git config workler.nameThe workspace name.
Remote originRepointed from the local clone path to the main project's real origin, so git fetch/git push work as expected. (No origin in the main project → none here.)
Remote workler-rootPoints at the parent project's path; used by workler branch-sync. Recreated/fixed on every branch-sync.
.git/info/excludeGets a .worktrees/ line, so the workspace can host nested workspaces.
Rule outputsSymlinks from link rules and files/folders from copy rules. Copied files are untracked and never count as "dirty".

What to commit, what to ignore

  • Commit .workler. It documents what a working checkout needs, and nested workspaces read the committed copy.
  • Nothing else needs ignoring by hand. .worktrees/ is excluded via .git/info/exclude, which is local to your machine — teammates who don't use Workler see no trace of it.

Released under the MIT License.