# scm-setup ***Source Control Server Preparation*** **Pre-requisite** 1. ssh client (built-in on Windows 10. Preinstall with Git installation). For windows 7 alternative, try Putty 2. [git](https://git-scm.com/) ```shell # use windows package manager $ winget install Git.Git ``` 3. [TortoiseGit](https://tortoisegit.org/) ```shell # use windows package manager $ winget install TortoiseGit.TortoiseGit ``` 4. [Tailscale](https://tailscale.com/) ```shell # use windows package manager $ winget install tailscale.tailscale ``` --- **Configuration** 1. setup sshkey. Run below to generate the private / public key. [SSH key-pair](https://www.techtarget.com/searchsecurity/tutorial/Use-ssh-keygen-to-create-SSH-key-pairs-and-more) ```shell $ ssh-keygen ``` 2. Pass the `c:\users\\.ssh\id_rsa.pub` to administrator to authorise the access to server (xxx.xxx.xxx.xxx) ```shell # from ubuntu shell $ ssh-copy-id -i ~/.ssh/id_rsa.pub mitpenang@xxx.xxx.xxx.xxx/home/mitpenang/.ssh/authorized_keys # from powershell PS c:> type $env:USERPROFILE\.ssh\id_rsa.pub | ssh mitpenang@xxx.xxx.xxx.xxx "cat >> .ssh/authorized_keys" ``` 3. Setup Tailscale. Need remote access to administrator to do first login. Please install [AnyDesk](https://anydesk.com/en) to facilitate remote access 4. Setup `c:\Windows\System32\Drivers\etc\hosts` file. Install [PowerToys](https://learn.microsoft.com/en-us/windows/powertoys/). Add the following entry to host file ```txt 127.0.0.1 dev.mitech.com.sg # Test Eng Server ``` 5. Setup git profile [configuration](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) ```shell $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com # setup default branch name as `main` $ git config --global init.defaultBranch main # Checking the settings $ git config --list ``` --- **Accessing the server** 1. Establish ssh port forwarding. Open a command prompt. Run below command. The ssh IP address can be found from Tailscale console ```shell $ ssh -L 3000:172.16.16.2:3000 -L 222:172.16.16.2:222 mitpenang@100.72.57.125 ``` 2. Open Chrome. Browse to Source Control Server [Mitech : Gitea](http://dev.mitech.com.sg:3000) 3. To clone, use `git ssh://...` --- **Git** 1. [Documentation](https://git-scm.com/doc) 2. [GitHub Flow Branching Strategy](https://www.flagship.io/git-branching-strategies/) ![GitHub Flow](./images/github-flow-branching-model.jpeg)