2010-12-06 18:04:32
| 分類:
預設分類|字型大小
訂閱tortoisegit + msysgit + copssh + windowsxp as server
1.需要軟體
git是為linux kernel開發而設計的版本控制系統,因此其與linux的結合非常緊密。這使得它在linux下使用起來非常方便。但是對於習慣windows的人就不那麼友好了。雖然目前也有msys-git和tortorsegit這樣的專案,使得在windows上使用git變得越來越方便。但目前乙個明顯的缺陷就是要把自己的版本庫共享給其他人時,很不方便。
在linux下,由於有完美的ssh支援,因此clone遠端機器的版本庫只要:
git clone [email protected]:path/to/repo local_dir
就可以輕鬆搞定。那麼可以在windows上配置好ssh,然後用和linux下一樣的方式來使用git嗎?
可以的: 首先,需要安裝兩個工具:
1 - git,windows下的git,還是msys-git比較好。
2 - ssh,可以用copssh,可以在windows上啟動ssh服務,而不僅是客戶端。
安裝這兩個工具的過程沒有什麼難度。這裡假定git是安裝在c:\git目錄下,copssh安裝在c:\icw目錄下。那麼當你安裝好以後,git已經可以從遠端得到版本庫,ssh也有乙個使用者可以登入了。假定這個使用者是git(copssh預設沒有任何使用者可以登入,需要手動啟用乙個設好密碼的windows使用者)。
這時,從其它機器用git使用者通過ssh登入以後,可以執行ls,cd等基本命令。但是git任然不能執行。所以,也就還不能通過這個ssh來發布git版本庫了。要實現這個,需要做一些設定。
首先、需要在git的安裝目錄裡找到cmd目錄,這裡就是c:\git\cmd了。在裡面建立如下幾個檔案: git, git-upload-pack, git-upload-archive, git-receive-pack。這裡都沒有副檔名的,主要是給登入後,由bash執行的。每個檔案都只有一行,分別是:
git裡寫 git.cmd $*
git-upload-pack裡寫 git upload-pack $*
git-upload-archive裡寫 git upload-archive $*
git-receive-pack裡寫 git receive-pack $*
然後,就要給登入後的使用者新增path了,保證上面新增的命令可以找到,並執行。找到copssh安裝目錄的etc下的profile檔案。這裡就是c:\icw\etc\profile了:在檔案最後新增兩行
gitpath=`/bin/cygpath c:/git/cmd` #這裡不是引號,路徑是git下的cmd,斜槓也要用unix的習慣
export path="$path:$gitpath"
然後,用git使用者重新從ssh登入。就可以使用git命令了。
例如建立乙個測試庫:
mkdir testgit
cd testgit
git init
touch a b c
git add .
git commit -m "init"
然後,就可以在遠端clone這個庫了。假定這台機器的ip是192.168.1.1。在另外一台機器上,
git clone [email protected]:testgit testgit
就可以clone成功了。這樣windows下的git+ssh服務就做成功了!
最後,說明一下目前知道的限制:
1)不能用link,也就是所有的檔案必須放在git使用者的home下。這個home的位置在 c:\icw\home\git。
2)clone時不能用絕對路徑,只能寫相對於git使用者home的相對路徑。
windows下架設SVN伺服器並設定開機啟動
c documents and settings administrator svn 使用 svn help 得到用法。2 建立倉庫repository 執行命令 c documents and settings administrator svnadmin create g svn 該命令會在g盤...
windows下架設SVN伺服器並設定開機啟動
c documents and settings administrator svn 使用 svn help 得到用法。2 建立倉庫repository 執行命令 c documents and settings administrator svnadmin create g svn 該命令會在g盤...
Windows下用MFC實現微秒級延時
一幫情況可以使用sleep 函式來實現延時,但windows不是實時的,是作業系統來分配處理器給多個執行緒的,而不會執行緒一直擁有處理器的使用權。比如延時50ms,不論採用什麼方式來延時,50ms以後,作業系統未必就正好把處理器分配給這個執行緒使用。使用乙個sleep 50 這下這個執行緒就暫停了,...