• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            羅朝輝(飄飄白云)

            關(guān)注嵌入式操作系統(tǒng),移動(dòng)平臺(tái),圖形開(kāi)發(fā)。-->加微博 ^_^

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              85 隨筆 :: 0 文章 :: 169 評(píng)論 :: 0 Trackbacks
            @import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
            Mac 下配置 Git 服務(wù)器
            羅朝輝 (http://www.shnenglu.com/kesalin)
            CC 許可,轉(zhuǎn)載請(qǐng)注明出處

            XCode 默認(rèn)支持 Git 作為代碼倉(cāng)庫(kù),當(dāng)我們新建一個(gè)倉(cāng)庫(kù)的時(shí)候,可以勾選創(chuàng)建默認(rèn)倉(cāng)庫(kù),只不過(guò)這個(gè)倉(cāng)庫(kù)是在本地的。本文介紹如何在 mac 機(jī)器上創(chuàng)建 Git 服務(wù)器,總體思路是:使用 gitosis 來(lái)簡(jiǎn)化創(chuàng)建過(guò)程,在用作服務(wù)器的機(jī)器上創(chuàng)建一個(gè)名為 git 的賬戶來(lái)創(chuàng)建 git 服務(wù)器,其他客戶端通過(guò) ssh 機(jī)制訪問(wèn) git 服務(wù)器。

            本文文檔:點(diǎn)此下載

            一,創(chuàng)建 git 賬戶
            1,在用作服務(wù)器的機(jī)器 Server 上創(chuàng)建 git 賬戶。我們可以通過(guò) System Preferences->accounts 來(lái)添加。在這里我添加一個(gè) git 的 administrator 賬戶,administrator 不是必須的,在這里僅僅為了方便。


            2,設(shè)置遠(yuǎn)程訪問(wèn)
            logout 當(dāng)前賬戶,使用 git 賬戶登錄;在 System Preferences->Sharing 中,勾選:Web Sharing 和 Remote Logig。

            二,下載安裝 gitosis
            1,Mac Snow默認(rèn)已經(jīng)為我們安裝了 Git 和 Python,可以使用如下命令查看其版本信息:
            yourname:~ git$ git --version
            git version 1.7.3.4
            yourname:~ git$ python --version
            Python 2.6.1

            2,通過(guò)命令 "git clone git://eagain.net/gitosis.git" 來(lái)下載 gitosis
            yourname:~ git$ git clone git://eagain.net/gitosis.git
            Cloning into gitosis
            remote: Counting objects: 614, done.
            remote: Compressing objects: 100% (183/183), done.
            remote: Total 614 (delta 434), reused 594 (delta 422)
            Receiving objects: 100% (614/614), 93.82 KiB | 45 KiB/s, done.
            Resolving deltas: 100% (434/434), done.

            3,進(jìn)入 gitosis 目錄,使用命令 "sudo python setup.py install" 來(lái)執(zhí)行 python 腳本來(lái)安裝 gitosis。
            yourname:~ git$ cd gitosis/
            yourname:gitosis git$ sudo python setup.py install
            running install
            running bdist_egg
            running egg_info
            creating gitosis.egg-info
            ……
            Using /Library/Python/2.6/site-packages/setuptools-0.6c9-py2.6.egg
            Finished processing dependencies for gitosis==0.2

            三,制作 ssh rsa 公鑰
            1,回到 client 機(jī)器上,制作 ssh 公鑰。在這里我的使用同一臺(tái)機(jī)器上的另一個(gè)賬戶作為 client。如果作為 client 的機(jī)器與作為 server 的機(jī)器不是同一臺(tái),也是類型的流程:制作公鑰,放置到服務(wù)的 /tmp 目錄下。只不過(guò)在同一臺(tái)機(jī)器上,我們可以通過(guò)開(kāi)啟另一個(gè) terminal,使用 su 切換到 local 賬戶就可以同時(shí)操作兩個(gè)賬戶。
            yourname:~ git$ su local_account
            Password:
            bash-3.2cd ~
            bash-3.2ssh-keygen -t rsa
            Generating public/private rsa key pair.
            Enter file in which to save the key (/Users/local_account/.ssh/id_rsa): 
            Enter passphrase (empty for no passphrase): 
            Enter same passphrase again: 
            Your identification has been saved in /Users/local_account/.ssh/id_rsa.
            Your public key has been saved in /Users/local_account/.ssh/id_rsa.pub.

            bash-3.2cd .ssh
            bash-3.2ls
            id_rsa        id_rsa.pub
            bash-3.2cp id_rsa.pub /tmp/yourame.pub

            在上面的命令里,首先通過(guò) su 切換到 local 賬戶(只有在同一臺(tái)機(jī)器上才有效),然后進(jìn)入到 local 賬戶的 home 目錄,使用 ssh-keygen -t rsa 生成 id_rsa.pub,最后將該文件拷貝放置到  /tmp/yourname.pub,這樣 git 賬戶就可以訪問(wèn) yourname.pub了,在這里改名是為了便于在 git 中辨識(shí)多個(gè) client。

            四,使用 ssh 公鑰初始化 gitosis
            1,不論你是以那種方式(郵件,usb等等)拷貝 yourname.pub 至服務(wù)器的 /tmp/yourname.pub。下面的流程都是一樣,登入服務(wù)器機(jī)器的 git 賬戶,進(jìn)入先前提到 gitosis 目錄,進(jìn)行如下操作初始化 gitosis,初始化完成后,會(huì)在 git 的 home 下創(chuàng)建 repositories 目錄。
            yourname:gitosis git$ sudo --u git gitosis-init < /tmp/yourname.pub
            Initialized empty Git repository in /Users/git/repositories/gitosis-admin.git/
            Reinitialized existing Git repository in /Users/git/repositories/gitosis-admin.git/

            在這里,會(huì)將該 client 當(dāng)做認(rèn)證受信任的賬戶,因此在 git 的 home 目錄下會(huì)有記錄,文件 authorized_keys 的內(nèi)容與 yourname.pub 差不多。
            yourname:~ git$ cd ~
            yourname:~ git$ cd .ssh
            yourname:.ssh git$ ls
            authorized_keys

            我們需要將 authorizd_keys 稍做修改,用編輯器打開(kāi)它,刪除里面的"command="gitosis-serve yourname",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " 這一行:
            yourname:.ssh git$ open -e authorized_keys 

            然后,我們對(duì) post-update 賦予可寫(xiě)權(quán)限,以便 client 端可以提交更改。
            yourname:gitosis git$ sudo chmod 755 /Users/git/repositories/gitosis-admin.git/hooks/post-update
            Password:
            yourname:.ssh git$ cd ~
            yourname:~ git$ cd repositories/
            yourname:repositories git$ ls
            gitosis-admin.git
            yourname:repositories git$

            在上面的命令中可以看到,gitosis 也是作為倉(cāng)庫(kù)的形式給出,我們可以在其他賬戶下 checkout,然后對(duì) gitosis 進(jìn)行配置管理等等,而無(wú)需使用服務(wù)器的 git 賬戶進(jìn)行。

            最后一步,修改 git 賬戶的 PATH 路徑。
            yourname:gitosis git$ touch ~/.bashrc
            yourname:gitosis git$ echo PATH=/usr/local/bin:/usr/local/git/bin:\$PATH > .bashrc
            yourname:gitosis git$ echo export PATH >> .bashrc
            yourname:gitosis git$ cat .bashrc 
            PATH=/usr/local/bin:/usr/local/git/bin:$PATH
            export PATH

            至此,服務(wù)器的配置完成。

            五,client 配置
            1,回到 local 賬戶,首先在 terminal 輸入如下命令修改 local 的 git 配置:
            bash-3.2git config --global user.name "yourgitname"
            bash-3.2git config --global user.email "yourmail@yourcom.com"

            2,測(cè)試服務(wù)器是否連接正確,將 10.1.4.211 換成你服務(wù)的名稱或服務(wù)器地址即可。
            yourname:~ local_account$ ssh git@10.1.4.211
            Last login: Mon Nov  7 13:11:38 2011 from 10.1.4.211

            3,在本地 clone 服務(wù)器倉(cāng)庫(kù),下面以 gitosis-admin.git 為例:
            bash-3.2git clone git@10.1.4.211:repositories/gitosis-admin.git
            Cloning into gitosis-admin
            remote: Counting objects: 5, done.
            remote: Compressing objects: 100% (5/5), done.
            remote: Total 5 (delta 0), reused 5 (delta 0)
            Receiving objects: 100% (5/5), done.
            bash-3.2ls
            Desktop        InstallApp    Music        Sites
            Documents    Library        Pictures    gitosis-admin
            Downloads    Movies        Public
            bash-3.2$ git 

            在上面的輸出中可以看到,我們已經(jīng)成功 clone 服務(wù)器的 gitosis-admin 倉(cāng)庫(kù)至本地了。

            4,在本地管理 gitosis-admin:
            進(jìn)入 gitosis-admin 目錄,我們來(lái)查看一下其目錄結(jié)構(gòu):gitosis.conf 文件是一個(gè)配置文件,里面定義哪些用戶可以訪問(wèn)哪些倉(cāng)庫(kù),我們可以修改這個(gè)配置;keydir 是存放ssh 公鑰的地方。
            bash-3.2cd gitosis-admin/
            bash-3.2ls
            gitosis.conf keydir
            bash-3.2cd keydir/
            bash-3.2ls
            yourname.pub

            我們只需要將其他 client 產(chǎn)生的 ssh 公鑰添加到 keydir 目錄下,并在 gitosis.conf 文件中配置這些用戶可以訪問(wèn)的倉(cāng)庫(kù)(用戶名與放置在 keydir 下sh 公鑰名相同,這就是在前面我們要修改ssh 公鑰名的原因),然后將改動(dòng)提交至服務(wù)器,這樣就可以讓其他的 client 端訪問(wèn)服務(wù)器的代碼倉(cāng)庫(kù)了。
            posted on 2011-11-07 16:09 羅朝輝 閱讀(9776) 評(píng)論(2)  編輯 收藏 引用 所屬分類: Cocoa 開(kāi)發(fā)

            評(píng)論

            # re: Mac 下配置 Git 服務(wù)器 2013-06-10 22:18 wzy
            大神。能給個(gè)qq私聊么?  回復(fù)  更多評(píng)論
              

            # re: Mac 下配置 Git 服務(wù)器 2014-06-23 19:52 liang
            有沒(méi)有例子介紹一下本地服務(wù)器建立后,如何將一個(gè)本地工程push到服務(wù)器呢?謝啦  回復(fù)  更多評(píng)論
              

            久久久久久久综合日本亚洲 | 久久99精品国产麻豆婷婷| 77777亚洲午夜久久多喷| 无码任你躁久久久久久| 婷婷久久综合九色综合九七| 一本色道久久综合| 久久精品无码午夜福利理论片| 久久棈精品久久久久久噜噜| 91精品免费久久久久久久久| 蜜桃麻豆www久久国产精品| 激情伊人五月天久久综合| 久久精品亚洲一区二区三区浴池 | 久久人爽人人爽人人片AV| 久久综合久久综合久久| 亚洲а∨天堂久久精品| 少妇人妻88久久中文字幕| 嫩草影院久久国产精品| 亚洲精品tv久久久久久久久久| 久久久久久精品久久久久| 久久电影网一区| 欧美午夜精品久久久久久浪潮| 久久综合综合久久综合| 久久久WWW成人免费精品| 久久精品国产亚洲AV无码娇色 | 久久五月精品中文字幕| 国产精品久久久久久久| 久久精品国产亚洲AV影院| 久久久久国产日韩精品网站| 精品久久久久久国产| 久久夜色精品国产网站| 久久久久久亚洲精品影院| 99久久国产免费福利| 久久久青草青青亚洲国产免观| 久久久国产精华液| 91性高湖久久久久| 久久精品国内一区二区三区 | 中文字幕一区二区三区久久网站 | 久久青青草原亚洲av无码| 99久久国产亚洲高清观看2024 | 久久午夜夜伦鲁鲁片免费无码影视| 大美女久久久久久j久久|