Skip to content

codemodify/sc

Repository files navigation

  Git (git) Subversion (svn) CVS Mercurial (hg) Perforce (pf) Jujutsu (jj)
🚧 🚧 🚧 🚧 🚧

what

  • a unified, modernized and sanitized frontend for a Source Control System like Git, SVN, CVS, etc

why

  • a semantically, logically and humanly dead-simple syntax that makes sense at 2AM
  • has output as JSON which allows integration into UIs or CLI tools
  • allows 100% of daily operations by knowing a simplified syntax that can work accross different source control systems if needed

why not

  • if you have your universe already tuned-up and are happy then this project may not be of interest
  • if you need things like git cherry-pick / git bisect / git fsck then this is not for you, but you can still run that side by side

how

  • autodetects the Version Control System:
    • .git - for Git
    • .svn - for Subversion
    • etc
  • basic concepts
    • workflow
      • REPO
        • BRANCH
          • COMMITS (permanent change)
          • CHANGE (temporary CHANGE, gets converted to COMMIT)
          • STASH (hidden CHANGE you don't want into a COMMIT, or when you want a clean BRANCH)
    • release
      • TAG - label a COMMIT, ex: v1.0.0 or v2026.04.03

commands

command info
sc help shows help
sc config list show backend configuration, grouped by global + local
sc config set --name "First Last" --email first@example.com set backend user name + email
sc config set --url git@github.com:user/ --instead-of https://github.com/user/ set a git insteadof rewrite rule
   
sc repo info show REPO details
sc repo init --backend git init a REPO
sc repo clone --url https://user.github.com/project.git clone a REPO
   
sc branch list list local BRANCHES
sc branch list --remote list local BRANCHES + remote
sc branch create --name feature-A create a new BRANCH
sc branch delete --name feature-A delete a BRANCH
sc branch switch --name feature-A switch a BRANCH
sc branch merge --name feature-A merge a BRANCH
sc branch rebase --name feature-A rebase a BRANCH
sc branch pr print browser URL to create a PR from the current BRANCH
   
sc commit list list local COMMITS
sc commit pull download + merge COMMITS
sc commit undo undo last COMMIT
sc commit save --note "message" convert local CHANGE to COMMIT
sc commit push push local COMMITS to server
   
sc change list list local CHANGES
sc change add --file file.text add to local CHANGES
sc change remove --file file.text remove from local CHANGES
sc change reset --file file.text reset a file to its original state
sc change diff show the diff
   
sc stash list list STASHES
sc stash add --name stash-one --file file.text add to STASH
sc stash remove --name stash-one --file file.text remove from STASH
sc stash delete --name stash-one delete STASH
   
sc tag list list TAGS
sc tag pull pull TAGS
sc tag create --name v2026.04.03 create a new TAG
sc tag delete --name v2026.04.03 delete a TAG
sc tag push push TAGS

About

source control made easy

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages