Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>CVS Source ControlNew to Visual Studio Code? Get it now.
CVS Source Control

CVS Source Control

tazyvova

|
15 installs
| (0) | Free
CVS integration for VS Code — status, diff, commit, update
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

CVS Source Control

VS Code extension that integrates CVS as a native Source Control provider — the same look and feel as the built-in Git extension.

Key features

Git-style SCM panel with staging

Files are split into Staged Changes, Changes, Untracked Files, Conflicts, ↓ Incoming Changes, and ⚠ Incoming Conflicts groups — identical in structure to the Git panel. CVS has no native staging; the extension emulates it by recording staged filenames locally and passing them explicitly to cvs commit. Full per-file context menu in each group.

Incoming changes

Check Remote runs cvs -qn update -d — detects what the server has without touching the working copy. Results appear in ↓ Incoming Changes (safe to pull) and ⚠ Incoming Conflicts (server changed, local also modified). Safe Pull pulls only the safe files in one batch. Set an auto-check interval (clock button) to poll the server automatically.

Conflict resolution

⚠ Incoming Conflicts shows files where merging would be risky. Click one to open VS Code's 3-way merge editor with your local edit as "Current" and the server revision as "Incoming". After saving, CVS: Resolve Incoming Conflict advances the file to the server revision and marks it M — ready to commit. CVS conflict-marker files (after a failed cvs update) open the same editor using the .# backup CVS left behind.

Diffs

Click any file in Changes or ↓ Incoming Changes for a side-by-side diff — no server round-trip for local changes (revision pinned from CVS/Entries). QuickDiff gutter bars appear on modified lines in the editor. Conflict marker lines (<<<<<<<, =======, >>>>>>>) are highlighted in red.

Commit history

CVS: Show History (SCM title or Explorer right-click) opens a filterable history panel. Commits by the same author with the same message within a configurable time window are grouped into one changeset row. File-targeted view shows one row per revision and a Compare button for side-by-side diffs of any two revisions.

Session log

The CVS Session Log panel in the SCM sidebar tracks every operation of the current session (commits, updates, reverts, pulls) with affected files and revision ranges. Filters to the active file automatically. Entries also appear in VS Code's built-in Timeline panel.

Explorer integration

Right-click any file or folder in a CVS working copy and choose CVS for the same operations available in the SCM panel — Update, Commit, Add / Add Binary, Remove, Revert, Rename, Tag, Ignore, Show History, Annotate, Diff, Resolve Conflict, plus folder-level Release and Checkout Subfolders. Menu entries only appear when applicable to the selected item's actual state (e.g. Add only for untracked files, Commit/Revert only for files with local changes) instead of showing every command unconditionally.

CVS commands covered

Command Notes
update full repo, per-file, dry-run (Check Remote)
commit all changes or staged subset
add
remove
tag commit-time, retrospective per-revision, or standalone on any file/folder
diff local vs base, local vs previous revision, incoming vs local, any two revisions
log / rlog history panel with changeset grouping
annotate
status SCM panel and auto-refresh

Planned

Feature
branch update-to-branch, merge-from-branch
login authenticate from within VS Code on auth failure
Multi-select batch operations across selected files in SCM and Explorer

Settings

Setting Default Description
cvs.cvsRoot "" Fallback CVSROOT if CVS/Root is absent
cvs.folders [] Additional CVS checkout directories to activate, beyond workspace folder roots (absolute paths)
cvs.showUntrackedFiles true Show untracked files in the SCM panel
cvs.showBothAddCommands false Show both Add and Add Binary regardless of detected file type
cvs.fileWatchCooldown 1 Seconds between file-watcher-triggered refreshes; 0 disables
cvs.verboseOutput false Log CVS command output to the Output channel
cvs.warnOnCommitAll true Warn before committing with nothing staged
cvs.logGroupingWindowSeconds 120 Max seconds between revisions to group as one changeset
cvs.logMaxEntries 100 Max changesets shown in the History panel
cvs.historyDateFormat "YYYY-MM-DD HH:mm" Date format in the History panel

Requirements

  • VS Code 1.85+ — desktop, Remote SSH, Dev Containers, or Codespaces (not VS Code for the Web)
  • cvs on PATH
  • CVSROOT auto-detected from CVS/Root; fallback: cvs.cvsRoot setting
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft