google-code-prettify

2013年2月23日 星期六

Git Server (Win 7 64bit) 安裝SSH

1.在os系統變數的「Path」變數中,加入Git安裝路徑下的bin和libexec\git-core兩個目錄,ex:C:\Git\bin 和 C:\Git\libexec\git-core




2.安裝Copssh(網址:https://www.itefix.no/i2/copssh ),我使用預設帳號「SvcCOPSSH」,這會在OS建立一個「SvcCOPSSH」帳號。



3. 安裝過程中,會跳出訊息,告訴你可能安裝完成後,要使用他的「Activate a user」工具,讓自己指定的帳號可以使用SSH連線



4. 在「Activate a user」工具指定OS已經存在的帳號來使用SSH的連線,其他設定我使用預設值,按Next之後,過程中會要輸入Passphrase



如果打了一個os沒有設定的帳號,會出現錯誤訊息,看起來這套軟體的帳號是和os的使用者帳號綁在一起的。



5. 「Activate a user」完成後,在Copssh的安裝目錄下的home目錄裡會新增以剛剛指定的帳號名稱為目錄名的使用者目錄,並且在裡面有自動產生的Public key和 Private key,要把Private Key給Client端那位使用者



6.在Client端使用TortoiseGit安裝進來的「Puttygen (PuTTY  Key Generator)」工具,點選「Load」,將前一步驟Server產生的Private Key (ex: ryanchen.key)選入,隨後跳出Enter Passphrase for key視窗,輸入在Server端使用「Activate a user」指定帳號的過程中輸入的Passphrase 。



6.1 最後按「Save private key」儲存server端給的Private key專換成Putty運行的Private key。




7.設定防火牆,開SSH的連接埠(Port),從控制台的防火牆畫面點擊「進階設定」,開啟以下視窗,點「輸入規則」之後到右邊點「新增規則」,規則類型選「連接埠」,套用到TCP、特定本機連接埠指定「22」,這是SSH預設的port,之後照著點下一步,完成設定。




8. 測試過如果Repository是在C槽,使用SSH連線都可以正常Clone,但是在D槽就不行了,試了使用「03. Start a Unix BASH Shell」工具在Copssh安裝路徑下(C:\Program Files (x86)\ICW)建立D槽Repos的上兩層目錄的symbolic link,還是無法連到Repos,還不知道要改那裏的設定才可以連D槽的Repos,會的高手教一下吧!

9. SSH連進來C槽就是「/」目錄,如果「C:\TestRepos」,SSH連線URL為「ssh://你的帳號@Server位址/TestRepos」

10. ssh帳號與os帳號綁在一起。要用的帳號必須在os建立帳號。


困惑點:
使用Copssh的「03. Start a Unix BASH Shell」工具或是Putty走ssh登入後,「/」路徑實際為Copssh安裝的目錄,但是使用TortoiseGit走ssh的url設為「ssh://ryanchen@Server位址/TestRepos」,TestRepos實際目錄在Windows的 C:\ 下,而不是在「Copssh」的安裝目錄下,我並沒有特別設定TestRepos,不知道為何Copssh和TortoiseGit的「/」為什麼會不一樣?如果能弄清原因,也許就知道為什麼讀不到D槽了。

2013年2月22日 星期五

Git筆記(單機安裝)

以下環境在同一台win 7 64bit上


1. Git是軟體系統,而Github是一個公司提供Git server服務,一般使用者可以用Github的服務當做自己的git server,如果程式是open source,讀取權限是Public,就免費,否則要收費。

2. Git軟體我從這個網址下載: http://git-scm.com/ 

3. Git的GUI Client端軟體我選擇安裝 tortoisegit , 網址:http://code.google.com/p/tortoisegit/

4.使用Visual studio 2010 搭配Git,我選擇安裝Git Source Control Provider 。安裝步驟:
4.1到擴充管理員

4.2 到「線上圖庫」右邊搜尋欄輸入「git」,找到「Git Source Control Provider」點選他進行下載安裝,安裝軟體玩,需要點選重新啟動Visual Studio 。


4.3重開VS之後,到「選項」

4.4 目前的原始碼控制外掛程式選擇「Git Source Control Provider」


5. Git的Server與Client的Repository之間的架構關係如下圖,下圖作者為ihower,
取材網址: http://www.slideshare.net/ihower/git-tutorial-13695342?ref=http://ihower.tw/blog/archives/6696/


6.在要當Server的機器上,使用Git Bash工具,開啟後,切換到要做Repository的目錄,執行以下指令:
$git init --bare Repository的名字

上面使用「--bare」參數,表示這是個純粹的Repository,不放工作副本Working copy,也就是Server端的Repository,看不到原本被控管的檔案實際樣貌,只看到Git創建的檔案。

7.在client端使用TortoiseGit,在要當Client端Repository的目錄上,按右鍵選擇「Git Clone」 ,跳出下面的視窗,URL輸入server端的Repository路徑,因為目前練習Server與client在同一台機器,所以直接輸入檔案路徑,按確定,之後會在目錄裡產生「.git」目錄。可以在Client端Repository這個目錄裡開始新增檔案。我是把「.git」目錄移到我原本的程式專案目錄裡。


8.因為我把拉下來的「.git」移到我原本的程式專案目錄,打開Visual studio後,就會在「方案總管」看到裡面檔案的圖示不一樣了,例如:當檔案與Repository裡的一樣時,會顯示「鎖」的圖示,如果有修改過與Repository不一致時,會顯示「紅色勾勾」的圖示。在這裡的檔案上面按右鍵就可以直接做Git的控管


9. 因為「Git Source Control Provider」會使用使用者需事先安裝的Git GUI Client軟體,所以我設定他使用TortoiseGit,因此Git Source Control Provider執行Git動作時,會呼叫TortoiseGit或Git對應的介面或工具,讓使用者操作。

10.在方案root上做Commt動作,把所有未列管而想列管的都Commit進去Repository,這樣開始就有第一版的控管檔案。

11.在其他Client端,做「Git Clone」後,也就新建出本地端的Working Copy。

12. Server在遠端,Client與Server之間使用SSH連線,請見