利用 fossil.exe 可以建立倉儲檔案, 也可以配合 stunnel, 採用批次檔自動建立 stunnel.conf 的方式, 讓 Fossil SCM 伺服器能在區域網路中, 以 https 模式連接.

修改 start.bat

當使用者下載可攜程式系統後, 可以使用手動方式設定 stunnel/config/stunnel.conf 檔案, 順利使用 tmp/fossil_repo 目錄啟動 fossil server, 自第3週起, 我們則要使用批次檔的指令, 以自動的方式取得電腦連外 IP 位址, 並且自動設定 stunnel.conf, 自動以 chrome 連接到本機所啟動的 fossil SCM server.

修改後的 start.bat 如下, 所啟動的 fossil server 位於 y:\tmp\fossil_repo\vcp.fossil 倉儲:

REM tiny2017 主要針對初學 Python3 與 C 學員所建立
REM 近端使用 fossil 管理資料版本, 並且定時轉為 git 格式後上傳到 github
@echo off
REM 設定 y 硬碟代號與 data 目錄對應
set Disk=y
subst %Disk%: "data"
REM 設定 leo 相關對應 Home 位置
set HomePath=%Disk%:\home
set HomeDrive=%Disk%:\home
set Home=%Disk%:\home
REM 將系統 Python 程式的 io 設為 utf-8
set PYTHONIOENCODING="utf-8"
REM 將後續的指令執行, 以 %Disk% 為主
%Disk%:
REM 設定 PYTHONPATH
set PYTHONPATH=%Disk%:\python-3.5.3-embed-amd64
REM 設定 Leo 所用的編輯器
set LEO_EDITOR=%Disk%:\wscite\SciTE.exe
REM for fossil https 連線設定
set HTTPS=on
REM 指令搜尋路徑設定
set path1=%PATH%;%Disk%:;%Disk%:\python-3.5.3-embed-amd64;%Disk%:\git\bin;%Disk%:\stunnel\bin;%Disk%:\sqlite-tools;%Disk%:\python-3.5.3-embed-amd64\Scripts;%Disk%:\portablegit\bin;
set path2=c:\Windows\Microsoft.NET\Framework\v3.5;%Disk%:\python-3.5.3-embed-amd64\Lib\site-packages;
set path3="C:\Program Files (x86)\Google\Chrome\Application"
path=%path%;%path1%;%path2%;%path3%
start /MIN %Disk%:\wscite\SciTE.exe
start /MIN cmd.exe
start /MIN cmd.exe
start /MIN cmd.exe
REM 啟動 Leo 編輯器
REM %Disk%:\Miniconda3\python.exe %Disk%:\apps\launchLeo.py
REM 啟動 stunnel
start /MIN fossil.exe server -P 127.0.0.1:8080 %Disk%:\tmp\fossil_repo\vcp.fossil
REM 取得電腦 IP, 然後設定 %Disk%:/stunnel/config/stunnel.conf
for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %ComputerName% ^| findstr [') do set NetworkIP=%%a
REM echo Network IP: %NetworkIP%
REM Saved in %Disk%:\stunnel\config\stunnel.conf
@echo off
REM 建立 stunnel.conf
@echo [https] > %Disk%:\stunnel\config\stunnel.conf
REM 附加資料
@echo accept = %NetworkIP%:443 >> %Disk%:\stunnel\config\stunnel.conf
@echo connect = 127.0.0.1:8080 >> %Disk%:\stunnel\config\stunnel.conf
@echo TIMEOUTclose = 0 >> %Disk%:\stunnel\config\stunnel.conf
@echo cert = %Disk%:\stunnel\config\localhost.crt >> %Disk%:\stunnel\config\stunnel.conf
@echo key = %Disk%:\stunnel\config\localhost.key >> %Disk%:\stunnel\config\stunnel.conf
REM 啟動 stunnel
start /MIN stunnel.exe
REM set proxy
REG IMPORT setup_proxy.reg
REM 以 chrome 連線到 https://%NetworkIP%:443
REM chrome  --proxy-server="140.130.17.17:3128" --proxy-bypass-list="192.168.1.*;*.edu.tw" https://%NetworkIP%
chrome https://%NetworkIP% http://mde.tw https://mde2a1.kmol.info https://mde2a2.kmol.info https://vimeo.com/user24079973 http://mde.tw/2017springcd/blog/ http://mde.tw/2017springwcm/blog/ http://mde.tw/2017springvcp/blog/ http://service.mde.tw
Exit

setup_proxy.reg 設定 Windows proxy 組態檔案:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] 
"MigrateProxy"=dword:00000001 
"ProxyEnable"=dword:00000001 
"ProxyHttp1.1"=dword:00000000 
"ProxyServer"="http://140.130.17.17:3128" 
"ProxyOverride"="192.168.1.*;*.edu.tw"

disable_proxy.reg 去除 Windows proxy 設定組態檔案:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] 
"ProxyEnable"=dword:00000000

與上述設定對應的 stop.bat:

@echo off
set Disk=y
REM 關閉 SciTE
taskkill /IM SciTE.exe /F
REM 關閉 python
taskkill /IM python.exe /F
REM 關閉 stunnel
taskkill /IM stunnel.exe /F
REM 關閉 fossil
taskkill /IM fossil.exe /F
REM 關閉 cmd 指令視窗
taskkill /IM cmd.exe /F
REM disable proxy
%Disk%:
REG IMPORT disable_proxy.reg
REM 清除 log 資料
path=%PATH%;
REM del /Q /F  V:\tmp\*.*
REM 終止虛擬硬碟與目錄的對應
subst %Disk%: /D
REM taskkill /IM mingw32 /F
EXIT

建立 vcp.fossil

使用 fossil.exe 建立 y:\tmp\fossil_repo\vcp.fossil

首先確定使用可攜系統啟動的 dos command, 進入 y:\

cd tmp

cd fossil_repo

進入 y:\tmp\fossil_repo 目錄後, 以 fossil init 建立 vcp.fossil 倉儲檔案

fossil init vcp.fossil

建立 vcp.fossil, 系統會顯示管理者的帳號與密碼, 必須紀錄起來, 例如: user/1234567

之後再確認上述 start.bat 已經新增 chrome.exe 的執行目錄為 path3, 並納入 path 指令中, 並且已經利用:

start /MIN fossil.exe server -P 127.0.0.1:8080 %Disk%:\tmp\fossil_repo\vcp.fossil

以 fossil server 指令啟動 vcp.fossil

以帳號密碼登入 fossil SCM server

當完成 vcp.fossil 建立, 且重新啟動 start.bat 之後, Chrome 會自動連接到本機的 fossil SCM server, 此時要確認連結至廣域網路的 proxy 設定, 已經將 192.168.1.* 內部網路區段設為例外, 不使用 proxy 連線.

fossil SCM 管理

更換登入密碼:

Admin - Users

更改網站名稱:

Admin - Configuration

設定時區:

Admin - Timeline - Use Universal Coordinated Time (UTC)

允許使用者註冊:

Admin - Access - Allow users to register themselves

查詢 vcp.fossil 倉儲中的用戶帳號設定:

fossil sql -R vcp.fossil "select login, pw from user;"

fossil SCM 基本操作

假設 vcp.fossil 位於 y:\tmp\fossil_repo 目錄, 而希望利用 y:\tmp\fossil_wd 目錄作為 working directory.

cd y:\tmp\fossil_wd

進入工作目錄

fossil open ./../fossil_repo/vcp.fossil

在工作目錄中開啟位於 fossil_repo 目錄下的 vcp.fossil 倉儲檔案

利用 SciTE 在 y:\tmp\fossil_wd 目錄中新增 for_printf1.c 檔案, 以 tools - go 確認可以執行後, 希望納入 vcp.fossil 倉儲中進行版次管理.

fossil add .

表示要在隨後, 以 recursive 方式納入本目錄中所有的改版變更.

確定 for_printf1.c 改版完成後, 準備提交.

fossil commit -m "add for_printf1.c"

利用 vcp.fossil 倉儲的網際介面檢查是否已經完成改版提交.

若要刪除 y:\tmp\fossil_wd 目錄中的 FOSSIL 目錄, 則使用:

fossil close

fossil push