利用 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