---
title: '在Windows10上使用repo'
disqus: hackmd
---
[TOC]
## 在Windows10上使用repo
## 1. 安裝WSL
### 1-1 啟動Windows子系統 Linux版
以系統管理員身分開啟 PowerShell 並執行:
```
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```
### 1-2 檢查執行 WSL 2 的需求
檢查您的版本及組建號碼,請選取 [Windows 標誌鍵 + R]、輸入 winver,然後選取 [確定]


### 1-3 啟用虛擬機器功能
以系統管理員身分開啟 PowerShell 並執行:
```
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```
完成後,請先**重新開機**
### 1-4 下載 Linux 核心更新套件
[WSL2 Linux 核心更新套件 (適用於 x64 電腦)](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)
下載好後**請完成安裝**
### 1-5 將 WSL 2 設定為預設版本
以系統管理員身分開啟 PowerShell 並執行:
```
wsl --set-default-version 2
```
### 1-6 安裝Linux版本
此部分會開啟 Microsoft Store
:::info
這邊會需要用到微軟帳號,若無帳號請先建立帳號,反之在**取得軟體**時,請登入帳號
:::
[安裝Ubuntu 18.04 LTS](https://www.microsoft.com/store/apps/9N9TNGVNDL3Q)
由於我已安裝,所以取得會變成啟動

取得後請至
開啟Ubuntu
第一次啟動,系統會要求建立username 以及 password

(此圖擷取自:https://docs.microsoft.com/zh-tw/windows/wsl/install-win10)
## 2. 安裝Windows 終端機(推薦)
請至Windwos Store下載Windows終端機

取得後請至
開啟Windows Terminal 
推薦的原因在於,它可以開啟多分頁(Powershell or Ubuntu 18.04)

在開新分頁時,點選箭頭,即可選擇不同系統
**到這邊WSL安裝完成**
## 3. 安裝Ubuntu 相關套件
利用Windows Terminal開啟Ubuntu 18.04
### 3-1安裝指令:
```
$ sudo apt-get update
$ sudo apt-get install git tig vim tmux
```
### 3-2tmux 測試,下面為指令
```
$ tmux
水平分割
$ ctrl + b 放開後接著按下 shift + "
切換到切割頁面
$ ctrl + b 放開後按下 上 or 下 選擇分頁割面
垂直分割
$ ctrl + b 放開後接著按下 shift + %
切換到切割頁面
$ ctrl + b 放開後按下 左 or 右 選擇分頁割面
離開
$ exit
```
水平分割

垂直分割

### 3-3產生 SSH key 並交給學長
:::info
當上述都完成後,要先產生ssh key,因為之後的測試,再推commit進遠端需要權限!!
這邊的概念是,遠端的github如何知道 使用者(你) 是否有權限對這個倉庫做修改上傳??
```gherkin=
github的機制是,看看這個github遠端帳號有沒有你這台電腦的key,判斷行為如下:
有:
=> 代表這個github遠端帳號認識你這台電腦,可以讓你做修改上傳
沒有:
=> 代表這個github遠端帳號根本不知道你是誰,所以你無權限做修改上傳
```
:::
### 3-4 安裝OPENSSH CLINET
```gherkin=
$ sudo apt-get install ssh
```
### 3-5 輸入以下指令產生key
```gherkin=
$ ssh-keygen
一路 enter 到完成 key 的產生
```

### 3-6 將public key 交給學長
```gherkin=
首先到 key 的位置 然後使用ls查看
$ cd /home/your_name/
$ cd ~/.ssh
這邊注意路徑~符號是代表你的家目錄,所以等同於/home/帳號名稱/,
注意 linux 的符號路徑,與 windows 區別如下
### linux
路徑符號使用 /
### windows
路徑符號使用 \
$ ls
若要查看有沒有隱藏資料夾使用下列指令
$ ls -a
```

```gherkin=
觀察 id_rsa.pub 裡面的內容
$ cat id_rsa.pub
```

請將整段key傳給學長
學長收到後會把這個key加到github遠端,如下圖,
代表遠端的github帳號已經可以認得你這台電腦了,
所以你這台電腦就有修改這個倉庫的權限了!!

## 4. git ,tig and vim 測試
### 4-1 使用 vim 編輯 git 設定檔案
```gherkin=
$ cd ~
$ vim .gitconfig
編輯如下圖,帳號名稱請輸入自己的
```

### 4-2 在家目錄,創一個 NTUT 資料夾並進入
```gherkin=
$ cd ~
$ mkdir NTUT
$ cd NTUT
```
### 4-3 下載測試用的 source
```gherkin=
### 完整指令查詢請下
$ man git
### 下載測試git來源
若沒有申請KEY在遠端 GITHUB ,用 HTTP 下載:
$ git clone https://github.com/masteree108/NTUT_for_testing.git
若已經有申請 KEY 在遠端 GITHUB ,請選用 SSH 下載:
$ git clone git@github.com:masteree108/NTUT_for_testing.git
$ cd NTUT_for_tesing
$ ls 可看到有 README.md 等檔案
```

### 4-4 使用 tig 看看現在有哪些 commit
```gherkin=
### 完整指令查詢請下
$ man tig
### 常用指令如下
$ tig (請在有 .git 的資料夾輸入 tig )
進入 commit: enter
離開: q
完整顯示 commit 內容: d
往下: j
往上: k
搜尋: /search_name
```
### 4-5 使用 vim 工具隨意編輯 README.md
```gherkin=
### 完整指令查詢請下
$ man vim
### 編輯README.md
$ vim README.md
按下i 開始編輯
編輯好後 按下ESC 再輸入:wq 即可儲存並退出
### 常用指令如下
編輯此行: i
從下一行開始編輯: o
回覆上一動: u
取消命令: esc
搜尋: /search_name
存檔後離開: :wq (注意有冒號)
不存檔強制離開: :q! (注意有冒號)
到指定行數: :(冒號+行數)
複製: v 選擇要複製的文字,按下y
貼上:將上一動複製的按下p
```

### 4-6 編輯後查詢,並加修改後的檔案加入暫存區(工作區=>暫存區)
```gherkin=
工作區的檔案 git 能知道是否修改
若剛剛有編輯 README.md 成功後,可用 tig 或如下指令觀察
$ git status
```

```gherkin=
$ git add README.md (嚴禁使用 git add * )
再觀察一次檔案狀態
$ git status
```

```gherkin=
使用tig 觀察
$ tig
```

### 4-7 將 add 後的檔案提交(commit)到本地倉庫
```gherkin=
$ git commit
按下i 開始編輯
編輯好後 按下ESC 再輸入:wq 即可儲存並退出
```

```gherkin=
在看一下git狀態,因為已經提交到本地倉庫,所以目前工作區為乾淨的
$ git status
```

```gherkin=
$ tig
可看到目前增加的commit 的內容,包括何人修改,修改內容與提交說明
```

### 4-8 將本地倉庫推至遠端倉庫(再次提醒必須key有申請過後才能使用)
```gherkin=
$ git push
```
## 5. 使用 repo 套件下載 專案程式碼
---
:::info
雖然目前有 vott source 和 python track code 兩包,但之後的 code 可能會越來越多,所以使用 repo 來管理整個專案,才不用每次都使用 git 指令一包一包下載
:::
### 5-1 創建資料夾後,使用 repo 下載專案
```gherkin=
首先安裝 repo 套件
$ cd ~
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo
$ chmod +x repo
$ sudo cp repo /usr/bin/repo
之後到 c: 建立專案資料夾
$ cd /mnt/c
$ mkdir VoTT
$ cd VoTT
```
:::warning
這邊請先安裝python
```
$ sudo apt install python-minimal
```
否則repo可能會有問題
:::
```gherkin=
管理倉庫來源下載
```
[VoTT管理專案的倉庫](https://github.com/masteree108/VoTT_NTUT_WIN10_repo/blob/master/default.xml)

```gherkin=
若沒有申請 KEY 在遠端 GITHUB,用 HTTPS 下載:
$ repo init -u https://github.com/masteree108/VoTT_NTUT_WIN10_repo.git -b master
若已經有申請 KEY 在遠端 GITHUB ,請選用 SSH 下載:
$ repo init -u git@github.com:masteree108/VoTT_NTUT_WIN10_repo.git -b master
```
:::warning
若是在下載時有出現
Permissions 0770 for '/home/xxxxx/.ssh/id_rsa' are too open.
可用下列指令修改權限,再重新下載即可
$ chmod 400 ~/.ssh/id_rsa
:::
```gherkin=
現在VoTT的資料夾只有.repo還沒有各別的專案資料夾
$ ls -a 可看到只有.repo資料夾

```
```gherkin=
更新來源(等同於從遠端下載)
$ repo sync
sync 後會看到兩包 source code 資料夾
指定連結到遠端的主分支
$ repo start master --all
```

```gherkin=
關於 repo start master --all 驗證
這是代表本倉庫的分支要連結到遠端的哪個分支.由於目前我這邊沒有設定任何分支,所以以 master 主分支為準
可以使用如下指令觀察
$ cd CVTRK/WIN10
$ git branch -a
可觀察到目前連結到的是 master 分支
```

### 5-2 觀察此專案內容
```gherkin=
repo sync 後可看到兩包資料夾,注意若是以後只是要從遠端更新專案,
只需要下下列指令,就會從遠端將資料更新到本地端
$ repo sync
下載後可看到兩包資料夾
$ ls
```
```gherkin=
若是要查有沒有隱藏資料夾使用下列指令,可以看有一包.repo
$ ls -a
```

```gherkin=
進入.repo我們可以看到各自的來源是從哪個 github 倉庫過來的
$ cd .repo
$ cd manifests
$ cat default.xml
```


## 6. 測試使用Anaconda來安裝Python套件包(測試完成)
https://hackmd.io/@NTUTVOTT/SJbese-Iv
[Anaconda下載](https://www.anaconda.com/products/individual#windows)

增加環境變數至系統
選取環境變數


[環境變數參考網站](https://ithelp.ithome.com.tw/articles/10218384)
VSCODE 安裝 python 相關套件

VSCODE 安裝 terminal 相關套件

開啟 VSCODE 的 terminal 並選擇 cmd
ctrl + ~

建立一個python 3.7環境
```gherkin=
$ conda create -n py37 python=3.7
```
切換至剛剛建立的環境
```gherkin=
$ conda activate py37
```
可看到指令列最旁邊多出py37
VS_CODE:

安裝相關套件
```gherkin=
$ pip install shortuuid
$ pip install pyinstaller
$ pip install numpy
$ pip install opencv-python==4.0.0.21
$ pip install opencv-contrib-python==4.0.0.21
$ conda install pyqt
```
若要移除opencv更新版本可參考如下指令
```gherkin=
pip uninstall -y opencv-contrib-python
pip uninstall -y opencv-python
```
vott_tracker.py測試指令
```gherkin=
python vott_tracker.py ../../../Drone_Target/vott_source_info.tmp ../../../Drone_Target/vott_target_path.json
v0.04之後的版本請用
$ python vott_tracker.py ../../../Drone_Target/vott_source_info.json ../../../Drone_Target/vott_target_path.json
```
## 6. 參考網站
[Windows 10 上適用於 Linux 的 Windows 子系統安裝指南](https://docs.microsoft.com/zh-tw/windows/wsl/install-win10)
[使用repo遇到python問題解法](https://askubuntu.com/questions/942930/usr-bin-env-python-no-such-file-or-directory)
###### tags: `WSL`, `Windows10`, `repo`