有兩個用途,一是偷懶不用去提交代碼,二是在遠程伺服器上使用以作定期備份。
複製代碼 代碼如下:
sudo gedit /etc/crontab
開啟後加入這行
複製代碼 代碼如下:
0 * * * * my_user_name my_script_path
表示每個整點以my_user_name身份執行my_script_path。這裡最好是使用當前的使用者名稱,修改掉預設的root,否則可能以root身份會提交失敗。詳情請詢問百度crontab的用法。
然後script的內容為:
複製代碼 代碼如下:
#!/bin/bash
cd $my_code_path
# 添加所有新檔案
svn st | grep "? \+" | sed "s/? \+//" | xargs svn add
# 刪除所有本地缺失的檔案
svn st | grep "! \+" | sed "s/! \+//" | xargs svn delete
# 提交
svn ci -m 'auto commit by script'
也可以不修改/etc/crontab,而是把指令碼 複製 或 軟連結 到 /etc/cron.hourly/ 下,指令碼應用su切換使用者,改成:
複製代碼 代碼如下:
#!/bin/bash
su - your_user_name <<EOF
cd $my_code_path
# 添加所有新檔案
svn st | grep "? \+" | sed "s/? \+//" | xargs svn add
# 刪除所有本地缺失的檔案
svn st | grep "! \+" | sed "s/! \+//" | xargs svn delete
# 提交
svn ci -m 'auto commit by script'
EOF
也可以不修改/etc/crontab,而是把指令碼 複製 或 軟連結 到 /etc/cron.hourly/ 下,指令碼應用su切換使用者,改成
複製代碼 代碼如下:
#!/bin/bash
su - your_user_name <<EOF
cd $my_code_path
# 添加所有新檔案
svn st | grep "? \+" | sed "s/? \+//" | xargs svn add
# 刪除所有本地缺失的檔案
svn st | grep "! \+" | sed "s/! \+//" | xargs svn delete
# 提交
svn ci -m 'auto commit by script'
EOF
預設是每個小時的第17分鐘執行。類似的,還有weekly、monthly、daily 檔案夾。
關於定時備份伺服器上的網頁檔案,會有兩種意見,其優劣如下:
1.指令碼定時commit(每個整點):開發人員可以隨時修改伺服器上的檔案並立刻生效,不用關心備份工作。
2.指令碼定時update(每隔30秒):可防止檔案多人同時修改的衝突;需要本地搭建伺服器環境,調試ok後才上傳,否則commit後都得等一段時間,伺服器才用上新代碼。
以人為本的工作環境就是讓人能偷懶就偷懶、讓做事能便捷就便捷。能保證不會多人同時修改而產生衝突的話,選擇第一種~~~