quartz/content/out/notes/version-control-systems.md
2022-04-06 19:48:06 +12:00

94 lines
2.2 KiB
Markdown

---
title: Version Control Systems
sr-due: 2022-04-30
sr-interval: 39
sr-ease: 270
---
#### 0.1.1 Review questions
1. what are the main goals of VCSs
2. describe the three types of version control system
3. what is forking. Why is it useful
---
tags: #review
resources: https://www.youtube.com/watch?v=Yc8sCSeMhi4
# VCSs
VCSs (version control systems) Are systems to keep track of changes to a set of files
E.g., [Git](out/notes/git.md)
## 1 Goals
- allow collaboration
- track changes
- restoring previous versions
- finding out origins of issues
- backups
- not restrict workflow
## 2 Terms
[Git Cheat Sheet](out/notes/git-cheat-sheet.md)
## 3 Discipline
- Pull/Push Regularly
- Use topic/features branches to keep main clean
- Dont use -f
## 4 Types
### 4.1 Centralised VCS
- Data is stored in one single central location
- Access is remote
- Checkout can block other devs
```mermaid
graph TD
subgraph Centralised Repo
Boris-. commit .->R((Repository))-- checkout -->Boris
R-- checkout -->Doris-. commmit .->R
R-- checkout -->Dennis-. commmit .->R
end
```
### 4.2 Distributed VCS
![](https://i.imgur.com/IVXAaFF.png)
- 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
### 4.3 Distributed + Centralised
- Main files are stored on central repo
- Each user also has their own copy locally
![](https://i.imgur.com/BxC8Tiq.png)
## 5 Sensitive information
- Passwords and other credentials among other things
- Data should be stored as encrypted blobs
- [BlackBox](https://github.com/StackExchange/blackbox)
## 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
## 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
- using [Git](out/notes/git.md)