① shell腳本中將svn的代碼checkout到生產伺服器的 "指定目錄" 中的命令是什麼
[root@localhost ~]# vim dd5
#!/bin/bash
svn_dir=$1
mkdir -p $svn_dir
cd $svn_dir
svn checkout svn://192.168.1.1/pro/domain
② 如何svn腳本命令check out自動輸入密碼
svn腳本命令check out自動輸入密碼:
需要把svn checkout/export寫入一個腳本中,執行
但是訪問失敗,需要授權
svn: PROPFIND request failed on 「XXXXXXX」
svn: PROPFIND of 'XXXXX': 403 Forbidden
改用python通過urllib訪問讀取也不行
拿到的html代碼是輸入用戶名和密碼頁面的html
1.因為面向的使用者不是同一個,有些人可能沒有許可權
如何拿到用戶名和密碼,密碼只能每次輸入么?有沒有svn自動保存在某地
2.有什麼方法可以搞定?check out附帶用戶名或密碼
thx
|
svn login會將密碼保存到相應的文件,以後svn co就不需要再輸入密碼了
如果要以其他ID去checkout,可以使用(svn co --help查看幫助):
svn co --username XXX http://ip/....
使用這個命令後,上面的svn login信息文件會被修改成新的ID/passwd
|添加選項
-user u -password p
另外,svn貌似也會自動保存密碼的
③ 怎麼用python更新SVN、獲取SVN版本號、獲取SVN兩個版本號之間的修改日誌。
1) 執行shell命令,最好用popen打開,不過中間會有一些交互,除非事先的鑒權信息保存在系統中了。參考buildbot中對這些版本管理軟體的用法。
2)好像有個pySVN的庫可以用。
④ 如何通過svn,git進行優雅的代碼集成
談到代碼集成,大部分人可能會想到各種的CI Server,比如CruiseControl、Hudson、Jenkins種種。這些持續集成的工具基本上都是將源碼管理工具、構建工具、測試工具等集成起來通過統一的配置來實現多項目、松耦合、自動化、透明化的構建目標的。而深入到某個項目,人們通常是通過maven或一段shell腳本來管理代碼間的復雜依賴關系及構建順序的。很多場景下maven並不好用,比如構建iOS程序時。
我們公司使用的Jenkins構建ios、Android程序時會調用一大段Shell腳本,項目中如果存在代碼依賴(比如其他部門開發的SDK),則通過約定目錄層次,通過shell 按順序執行SVN命令分配簽出代碼後執行構建命令——這么干很醜!一方面,團隊成員在每個人的開發環境上都要進行很多約定的設置才能開始工作。另一方面,外部依賴代碼的版本不好管理。因此,通過研究,我決定將這些外部代碼通過 svn externals來實現。不但開發環境配置簡單了,Jenkins構建的代碼也精簡了不少。同樣,我對我的靜態博客中皮膚的依賴也改成了Git submole的方式。——這種動態關聯,讓人感覺輕松不少。
一、svn externals:
cd /path/to/your/codedir
svn pedit svn:externals .
在打開的窗口中填入要依賴的外部代碼路徑,形如
localDir -r0000 http://the/outer/svn/url
其中,localDir -> 你的代碼簽出到當前路徑後存放的目錄名。-r0000 -> 限定svn版本號,可不填則將簽出最新代碼。
可以輸入多行,部署更多的外部依賴。
:wq 保存後繼續:
svn up
svn ci -m 'add externals'
再檢查一下依賴是否已經都設置好,是否可以build通過,就可以通知其他人簽出了。
參考:svn externals 引入外部分支目錄 學會使用svn:externals
二、git submole:
以下是本博客代碼如何引入主題的腳本:
cd /path/to/your/blog
mkdir themes
mkdir themes/puresam
git submole add [email protected]:hl85/catsup-theme-puresam.git themes/puresam
git add .
git commit -m "Add submole puresam"
git submole init
git push
參考:Git Submole 的認識與正確使用!
⑤ windows 怎麼用svn命令
1、Windows下命令行工具:
發現原來安裝的tortoisesvn已經集成到shell中,不能在命令行下使用。
下載Apache Subversion command line tools,這是一個可以在cmd下使用的命令行工具,解壓後把裡面bin目錄這個路徑添加到環境變數的path,這樣在cmd下就可以使用了,和linux下使用svn的習慣一樣了。
目錄約定:
/trunck:開發主線
/branches:支線副本
/tags:標簽副本(一旦創建,不允許修改)
1)使用trunk作為主要的開發目錄
一般的,我們的所有的開發都是基於trunk進行開發,當一個版本(release)開發告一段落(開發、測試、文檔、製作安裝程序、打包等結束後),代碼處於凍結狀態(人為規定,可以通過hook來進行管理)。此時應該基於當前凍結的代碼庫,打tag。
當下一個版本/階段的開發任務開始時,繼續在trunk進行開發。此時,如果發現了上一個已發行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在開發的版本(Developing Version)無法滿足時間要求,這時候就需要在上一個版本上進行修改了。解決方法是基於發行版對應的tag,做相應的分支(branch)進行開發。
2)下圖為struts2的SVN倉庫目錄:
3、常用命令
svn help
svn --version
svn --version --quiet 只顯示版本號
svn checkout 地址
svn add 文件或者文件夾 增加本地數據到伺服器
svn commit / svn ci -m 「注釋」 文件名 提交代碼,要先add才commit
svn update / svn up不必跟特定的文件或目錄,也可以自己指定需要更新的文件或目錄。每次commit或者改動之前最好更新一下。
svn log
svn delete 文件名
svn resolve 路徑 --accept working 解決沖突
http://zccst.iteye.com/blog/1765519
svn switch 遠程路徑 版本切換
svn list路徑/svn ls 列出版本庫下的文件和目錄
svn merge -r m:n 路徑 合並文件,從版本號m到版本號n的遠程分支都合並到當前分支中
svn info 確認工作目錄的svn信息
svn diff -r m:n 路徑 對版本m和版本n比較差異
svn cleanup 為失敗的失誤清場
svn status -v 在本地進行代碼修改,檢查修改狀態
svn import 遠程路徑 --message 「message」 將當前路徑下文件導入到版本庫中
svn export 遠程路徑 導出一份干凈的項目
svn move/ svn mv 原文件名 新文件名 重命名
svn mkdir 文件名
svn / svn cp 源文件路徑 新文件路徑
svn revert 文件名 只能恢復未提交之前的操作
若要還原已提交的改動:只能用舊文件覆蓋新文件。操作如下:
1)sun up 讓本地工作拷貝更新到最新狀態
2)svn log your_file_path 查看文件日誌,這時候提交時填寫的說明信息就派上用場了
3)svn diff -r 舊修訂版序號:新修訂版序號 your_file_path 查看兩個修訂版之間的不同。
4)決定用哪個舊的修訂版號後,用舊的修訂版號文件覆蓋新的修訂版號文件。svn merge -r 新修訂版序號:舊修訂版序號 your_file_path
5)svn commit -m "恢復到某修訂版(某修訂版作廢)"
本地的版本叫做working
4、關於merge
branch主要用於新功能的開發
合並發生在本地working ,只要你不提交就不會影響到repository
合並前一定要先update、commit,保證不會out of day,並將本地的修改保存到repository
branch和trunk並行開發的過程中,要經常同步,將trunk的修改合並到branch,合並時選擇"Merge a range of revision"
branch最後合並回trunk時,merge type選擇"Reintegrate a branch"
不管是從trunk合並到branch還是最終從branch合並回trunk,在每次合並前最好先update,然後將本地的修改先全部commit,保護好現場,萬一合並不理想隨時都可以reverthttp://blog.csdn.net/eggcalm/article/details/6606520
http://zhengkun.readthedocs.org/zh_CN/latest/2014/02/07/svn-usage/
5、關於解決沖突
發生沖突之後會出現三個臨時文件:
XXX.mine XXX.r1 XXX.r2
一旦解決了沖突,需用svn resolved讓subversion知道,這樣就會刪除這三個臨時文件,沖突狀態解決。
三種解決方式:
手工合並沖突:需要將沖突標志刪除
用某一個臨時文件覆蓋自己的工作文件
用svn revert 放棄本地修改,不需要執行resolved