quartz/content/notes/version-control-system.md
2022-04-09 14:51:02 +12:00

2.0 KiB

title aliases tags
version-control-system VCS, version control system
info201

VCSs (version control systems) Are systems to keep track of changes to a set of files E.g., git

0.1 Goals

  • allow collaboration
  • track changes
  • restoring previous versions
  • finding out origins of issues
  • backups
  • not restrict workflow

0.2 Terms

cheatsheets/git-cheat-sheet

0.3 Discipline

  • Pull/Push Regularly
  • Use topic/features branches to keep main clean
  • Dont use -f

0.4 Types

0.4.1 Centralised VCS

  • Data is stored in one single central location
  • Access is remote
  • Checkout can block other devs
	graph TD
	subgraph Centralised Repo
		Boris-. commit .->R((Repository))-- checkout -->Boris
		R-- checkout -->Doris-. commmit .->R
		R-- checkout -->Dennis-. commmit .->R
	end

0.4.2 Distributed VCS

  • Data is stored on every access point
  • Good
    • more robust -> each dev has a backup
    • Don't need internet
  • Bad
    • Hard to keep track of "main" files

0.4.3 Distributed + Centralised

  • Main files are stored on central repo
  • Each user also has their own copy locally

0.5 Sensitive information

  • Passwords and other credentials among other things
  • Data should be stored as encrypted blobs

0.6 Forking

  • Cloning into a new remote repo in your account
  • Allows community to contribute to projects without giving them write access to the original repo
  • Process
    • Create a fork of a project
    • Make Changes
    • Pull request to merge fork back into project
    • Admins of project can acccept modify or reject pull request

0.7 software dev needs file wrangling

many copies of a project's source code files needed:

  • facilitating different developers private code experiments
  • working on fixing bugs in code
  • developing new features
  • reviewing code changes
  • managing releases of sofware products