You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
3.1 KiB
Markdown

# 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](https://www.putty.org/)
```shell
# use windows package manager
$ winget install PuTTY.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.
- [Tutoria](https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key)
- [Tutorial Windows 10](https://phoenixnap.com/kb/generate-ssh-key-windows-10)
- [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\<username>\.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.30.30.21:3000 -L 29419:172.30.30.21:29419 mitpenang@jump-host-ext
```
2. Open Chrome. Browse to Source Control Server [Mitech : Gitea](http://dev.mitech.com.sg:3000)
3. Setup Gitea repo SSH access. [Reference from Github](https://jdblischak.github.io/2014-09-18-chicago/novice/git/05-sshkeys.html)
4. To clone, use `git ssh://...`
5. Alternatively, use below command to keep the ssh port forwarding active in background
```shell
# -N : not to execute remote command
# -f : run in the background
$ ssh -N -f -L 3000:172.30.30.21:3000 -L 29419:172.30.30.21:29419 mitpenang@jump-host-ext
```
---
**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)