Skip to main content

Source Control Management

The Source Control Management plugin, or SCM, integrates Git and Fossil with Pragtical. Review changes, prepare commits, inspect history, and manage branches and tags without leaving the editor. Repository operations run asynchronously so you can continue working while commands complete.

SCM workbench showing changed files and a Lua diff in One Dark

Start Here​

New to the plugin? Follow Getting Started, then open the Repository Workbench with ctrl+shift+g.

For a typical Git change:

  1. Save your files and review Changes in the workbench.
  2. Stage the files, hunks, or lines that belong in the commit.
  3. Inspect Staged, choose Commit..., and write a message.
  4. Save the message, confirm Commit, then push when ready.

For Fossil, add new files and review tracked changes before committing. There is no separate staging area. See the backend differences below before applying a Git workflow to a Fossil checkout.

In This Manual​

GuideWhat you will learn
Getting StartedInstallation, repository detection, and initialization
Repository WorkbenchChanges, staging, filters, and editor integration
Diffs and ReviewUnified and split diffs, changed files, and Viewed marks
Commits and HistoryCommit messages, amend, history, cherry-pick, and blame
Branches and TagsCreate, check out, compare, edit, rebase, and delete refs
Remotes and SynchronizationRemotes, fetch, pull strategies, push, and authentication
Conflicts and RecoveryResolve conflicts and continue or abort operations
Repository ToolsStashes, search, worktrees, submodules, LFS, and rewriting
Configuration and TroubleshootingSettings, executable paths, and common problems
Command ReferenceCommands, shortcuts, and context-sensitive actions
Extending SCMBackend interfaces and asynchronous integration

Git and Fossil​

SCM follows each tool's model. An unavailable operation is not necessarily a missing executable or a broken menu: it may not apply to that backend.

WorkflowGitFossil
Review changes and commit historySupportedSupported
Stage files, hunks, or linesGit indexNo staging area
Create and check out branches or tagsSupportedSupported
Delete a branchDelete a local branch refClose the branch; history remains
Amend through the commit editorReplace the current commit, including staged changesChange the current check-in's comment
Rebase a branchSupportedNot offered
Merge branchesMerge or fast-forward, with conflict preferencesNormal or integrate merge; commit afterward
Stash tracked workSupportedSupported
Include untracked files in a stashOptionalNot offered
Incoming and outgoing commit countsRelative to the configured upstreamNo Git-style tracking-ref comparison
Manage remote URLsNamed remotes and separate push URLsNamed remotes and sync default
Push or delete individual remote refsSupportedNot offered
Worktrees, submodules, LFS, local rewrite plansGit-specific toolsNot offered
Repository actions affect real files and history

Review confirmation dialogs before discarding changes, deleting refs, applying stashes, or rewriting history. Keep a separate backup of important uncommitted work. A diff view or Viewed mark is not a backup.