經過gitolite架設git倉庫

          經過gitolite架設git倉庫 git

第一步:在root用戶下作以下事情 github

adduser --system  --shell  /bin/bash --group git shell

// 建立專用帳號git,全部用戶都用此帳號訪問git
正在添加系統用戶"git" (UID 120)... vim

正在添加新組"git" (GID 126)... bash

正在將新用戶"git" (UID 120)添加到組"git"... app

建立主目錄"/home/git"... ssh

第二步 sudo passwd git svn

輸入新的 UNIX 密碼:  this

從新輸入新的 UNIX 密碼:  spa

passwd:已成功更新密碼

exit  //退出root用戶

第三步:進入git用戶

 su git

密碼:

第四步:建立

$mkdir -p /home/git/bin/gitolite/share/gitolite/conf/ /home/git/bin/gitolite/share/gitolite/hooks/

第五步下載gitolite
$ git clone git://github.com/ossxp-com/gitolite.git

Initialized empty Git repository in /home/git/gitolite/.git/

remote: Counting objects: 6194, done.

remote: Compressing objects: 100% (1942/1942), done.

remote: Total 6194 (delta 4324), reused 6010 (delta 4186)

Receiving objects: 100% (6194/6194), 1.42 MiB | 281 KiB/s, done.

Resolving deltas: 100% (4324/4324), done.

第六步採用源代碼方式安裝gitolite

gitolite源碼所在位置上面clone下來的目錄/gitolite/src/執行下面的命令

cd gitolite/src
$./gl-system-install /home/git/bin/gitolite  /home/git/bin/gitolite/share/gitolite/conf/ /home/git/bin/gitolite/share/gitolite/hooks/
               ***** WARNING *****

    gl-setup is not in your $PATH.

    Since gl-setup MUST be run from the PATH (and not as src/gl-setup or

    such), you must fix this before running gl-setup.  Just add

        PATH=/home/git/bin/gitolite:$PATH

    to the end of your bashrc or similar file.  You can even simply do that

manually each time you log in and want to run a gitolite command.

第七步gitolite建立倉庫編輯/home/git/bin/gitolite/gl-setup

vim /home/git/bin/gitolite/gl-setup

     GL_PACKAGE_CONF變量改爲上面安裝gitolite的配置目錄,如:

    GL_PACKAGE_CONF=/home/git/bin/gitolite/share/gitolite/conf/

// 不然會打開一個空的~/.gitolite.rc,就不知道該如何往裏寫配置信息了
     // 由於gl-system-install有問題,因此安裝之後還要手工改安裝目錄中的這個文件gl-setup

第八步:加入系統的環境變量
    echo "PATH=/home/git/bin/gitolite:$PATH" >> ~/.bashrc

source ~/.bashrc

//每次修改.bashrc後,使用source ~/.bashrc  是修改當即生效

第九步:產生管理員的密鑰在用戶下

例如:我要用aa帳戶:

aa帳戶的根目錄下執行:ssh-keygen  

就會在根目錄下產生.ssh 目錄 下面有:id_rsa  id_rsa.pub

id_rsa.pub拷貝到git用戶的的根目錄下:

scp .ssh/id_rsa.pub  git@localhost :~/

第十步:在git 用戶下:

id_rsa.pub 命名爲aa.pub

mv id_rsa.pub aa.pub

第十一步:在home/git/bin/gitolite/

./gl-setup ~/aa.pub 

//這裏提供的公鑰是做爲管理員的

-- 編輯自動打開的.gitolite.rc文件:
        --- 必定要修改$GL_PACKAGE_HOOKS,改爲gl-system-install指定的hook目錄即/home/git/bin/gitolite/share/gitolite/hooks
-- .gitolite.rc編輯完成後保存退出,繼續自動執行:

creating gitolite-admin...

Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/

creating testing...

Initialized empty Git repository in /home/git/repositories/testing.git/

[master (root-commit) 07c5b91] gl-setup ../../deovo.pub

 2 files changed, 26 insertions(+), 0 deletions(-)

 create mode 100644 conf/gitolite.conf

 create mode 100644 keydir/deovo.pub


   


   如今就能夠在aa用戶下clone一份gitolite-admin 倉庫來管理代碼和用戶

   git clone git@192.168.1.24:gitolite-admin.git

Initialized empty Git repository in /home/deovo/share/gitolite-admin/.git/

remote: Counting objects: 6, done.

remote: Compressing objects: 100% (4/4), done.

remote: Total 6 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (6/6), done.

 git clone git@192.168.1.24:testing.git

Initialized empty Git repository in /home/deovo/share/testing/.git/

warning: You appear to have cloned an empty repository.

//這是個空的代碼倉庫包

 cd testing/

 vi aa.txt

//輸入一些內容保存退出

 git status

# On branch master

#

# Initial commit

#

# Untracked files:

#   (use "git add <file>..." to include in what will be committed)

#

#       aa.txt

nothing added to commit but untracked files present (use "git add" to track)

 git add -A .

 git status

# On branch master

#

# Initial commit

#

# Changes to be committed:

#   (use "git rm --cached <file>..." to unstage)

#

#       new file:   aa.txt

#

 git commit -m "test1"

[master (root-commit) 74e0d36] test1

 1 files changed, 1 insertions(+), 0 deletions(-)

 create mode 100644 aa.txt 

 git push origin//第一次須要用git push origin master

Counting objects: 3, done.

Delta compression using up to 16 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 375 bytes, done.

Total 3 (delta 0), reused 0 (delta 0)

remote: *** hooks.mailinglist is not set so no email will be sent

remote: *** for refs/heads/master update 0000000000000000000000000000000000000000->74e0d366935e1289764cf780c486bdbfc1966f98

To git@192.168.1.24:testing.git

 * [new branch]      master -> master

git log

如今將一個代碼用git 管理起來

首先有一套代碼

例如名字叫ics

1.kernel u-boot out cleanmake clean

2.代碼中會包含一些.git /.gitnore=.git* /.svn /.svn*

3. find . -name .git  -type -d找到後刪除 rm -Rf  ******

4. find . -name .git* -type f

5. find . -name .git* -type f -delete -print

6. find . -name .svn -type f

7. find . -name .svn* -type f

gitolite-admin/conf/gitolite.conf

添加repo    ics

        RW+     =   @admin

        R       =   @all

git status

git add -A .

git commit -m 111111

git push origin

ics代碼中

git init 

git remote add origin git@localhost :ics.git

git add .

git commit -m init ics

git push origin master(由於第一次要加master)

以後就能夠在aa用戶上clone 管理好的代碼了

git clone git@localhost :ics.git

相關文章
相關標籤/搜索