各位大大們好
小弟是屬於幫公司打雜的人員,頂多對DOS的指令稍微了解
由於老闆說需要弄台伺服器(可能NAS?)把一些會計資料全部弄上去(會計有兩位)
這裡是有想要在會計電腦上使用SVN做版本管理
但鑑於沒辦法要求會計對於SVN的commit能夠熟練(雖然也就只是按個右鍵,輸入更改內容就提交…)
所以能夠做的就只能由小弟這裡做好
目前有搜尋一些文章看SVN的使用方式
不過目前先以撰寫bat檔,然後在自動關機前執行此bat檔案
內容如下
@echo off
rem 显示部分
@echo
@echo 注 意 事 项
@echo ************************************************************************
@echo 可以精简并通过计划任务来制定自动执行,运行前请检查下面目录:
@echo.
@echo 1.svn_bin 为安装TortoiseSVN客户端的可执行程序目录
@echo 2.svn_work 为更新项目文件的目录
@echo.
@echo WIN7或WINVista或WIN2008的用户请用管理员身份运行
@echo
@echo ************************************************************************
rem 路径变量,请在此处按实际修改,最后面不要带斜杠
@set svn_bin=C:\Program Files\TortoiseSVN\bin
@set svn_work=D:\Workshop
@set server_cfg_file_dir=D:\OneDrive\Workshop
::提交配置文件
"%svn_bin%"\TortoiseProc.exe /command:commit /path:"%svn_work%" /closeonend:1
@echo finish commit
pause
::文件到此结束
這其實算是抄別人的內容,自己稍加修改
主要參考網頁為
https://blog.csdn.net/xiaoheqin/article/details/51259839
但不知為何,兩下點擊卻馬上就消失了
原本想說是不是內容有問題(因為含簡體中文),也把編碼方式改成Unicode
並且以系統管理員身份執行,也是稍縱即逝
後來就直接開啟CMD
輸入了
C:\Program Files\TortoiseSVN>tortoiseproc /command:commit /path:"D:\Workshop" /closeonend:1
感覺是已經到了,但是只差最後沒有提交出去啊…(提交出去是最終目的)
所以小弟這邊的目的是
-----------------------------2018/9/9內容更新--------------------------------
目前有在海外(日本)的網站找到其中一個功能---自動強制送交
原網址為
https://dh3p7.app.goo.gl/wkiy
這裡解套如下:
1.在安裝Tortoise的時候,需要連同「command line client tools」項目一起安裝
2.弄成bat檔的時候,程式碼如下
@echo off
:start
setlocal ENABLEDELAYEDEXPANSION
set TD=%~dp0
cd /d %TD%
:SVN_UPDATE
svn update
:SVN_ADD_NOTUNDERCONTROL
FOR /F "usebackq delims=" %%i IN (`svn status`) DO (
set LN="%%i"
set FC=!LN:~1,1!
set FN=!LN:~9,-1!
IF "!FC!"=="?" (
svn add "!FN!"
)
)
:SVN_COMMIT
set MSG=""
svn commit -m %MSG%
:end
執行這個bat檔之後,的確就達到我所需要的強制自動上傳
因為公司內並無共同作業
使用SVN只是單純的版本回滾(就怕老闆說之前的比較好還是怎樣之類…相信你懂的)
現在就差在自動加入Log訊息
不過我這邊有再思考了一下
其實在這bat檔中
:SVN_COMMIT
set MSG=""
svn commit -m %MSG%
這邊就有可以設定Log訊息
只是還在研究如何將系統時間可以填入到這個項目,這樣就大功告成了
svn_bin=C:\Program Files\TortoiseSVN\bin
//改成
svn_bin="C:\Program Files\TortoiseSVN\bin"
試試看
大大,跟你報告一下我更改的進度
目前算是成功一半
找到的原因是…
編碼一定要ANSI不能是Unicode,否則絕對會馬上閃一下就沒了
找了一下似乎只要撰寫bat檔的話只能用Ansi
那麼我內容剛好有非英文之外的GB編碼(大陸那邊的)
要碼只能強制用Big5格式,不然就是全英文註釋才可以
另外
svn_bin=C:\Program Files\TortoiseSVN\bin
維持原狀即可,不需要再加入""
否則一樣不能執行
另外要請教的是,目前這樣的寫法的確是跳出Commit視窗
但是我還希望達成的是
跳出Commit視窗後,可以在訊息的地方自動填入今天日期
格式如下:
20180908_1(第一次關機)
20180908_2(如被叫回加班必須再開電腦但還在同一日內)
上述都為自動填入,且需要「強制上傳」
主要也因為SVN有版本管理概念
不管內容是否有誤,只要回滾上個版本就好
還請大大指點,謝謝!
有點像是自問自答,最終自己找出方法來
批次檔功能如下
目前不足的部分
如更新目錄有檔案被刪除的話,是無法被自動更新
原因:
因為在程式碼裡面有加入svn update這段,這段就是會先將遠端的檔案下載到目錄,所以說即使刪除了原檔案,但是跟遠端比較你現在少的這些東西,就又會固定抓下來
但是如果沒有把svn update這段加入,似乎自動送交動作就不能執行
猜測:
可能要在送交前加入一些條件式才有辦法完成,只是現階段來講
這功能還不是很完美,待高手來把這部分補完
下面是小弟完成的部分
@echo off
:start
setlocal ENABLEDELAYEDEXPANSION
set TD=%~dp0
cd /d %TD%
:SVN_UPDATE
svn update
:SVN_ADD_NOTUNDERCONTROL
FOR /F "usebackq delims=" %%i IN (`svn status`) DO (
set LN="%%i"
set FC=!LN:~1,1!
set FN=!LN:~9,-1!
IF "!FC!"=="?" (
svn add "!FN!"
)
)
:SVN_COMMIT
set MSG="%date% %time%"
svn commit -m %MSG%
:end
※注意:此批次檔必須放在更新目錄下才能執行
以上