repo 服务器环境搭建及客户端使用

1.  repo准备
    a. 创建repo的git仓库  --在服务器端创建
# cd /opt/git
# mkdir  -p tv608/manifest.git
# cd tv608/manifest.git
# git init --bare


    b. 将repo仓库添加到gitosis
# git  clone git@gitserver:gitosis-admin.git
# cd gitosis-admin
# vi gitosis.conf
[group repo-worker]
writable = manifest
members = root@darling
# git add gitosis.conf
# git commit -m "add repo manifest"
# git push


    c. 初始化repo manifest.git仓库的master分支   --在客户端创建及提交
# mkdir manifest
# cd manifest
# git init
# touch readme
# git add .
# git remote add origin git@192.168.15.121:tv608/manifest.git
# git push origin master


    d. 为repo仓库添加default.xml文件


2. xml 格式详解


<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote name="aosp" fetch="https://android.googlesource.com/" />
  <remote name="github" fetch="git://github.com" review="review.cyanogenmod.com" />
  <default revision="refs/heads/ics" remote="github" sync-j="4" />
 
  <project path="build" name="CyanogenMod/android_build">
    <copyfile src="core/root.mk" dest="Makefile" />
  </project>
  <project path="abi/cpp" name="platform/abi/cpp" remote="aosp" revision="refs/tags/android-4.0.3_r1" />
  <project path="bionic" name="CyanogenMod/android_bionic" />
 
  ... ...
</manifest>


a.  remote  标签定义远程仓库资源
name  定义的仓库名字,供下面引用
fetch 定义仓库源的url


b.  default 标签定义默认使用的远程仓库,当project没有指定remote远程仓库属性时使用
revision    分支名
remote      远端仓库地址


c.  project 标签定义工厂项目资源
name对应的是远端服务器地址
path对应的是本地代码地址
remote  表示使用的远端仓库地址


3. 客户端使用repo
# /bin/repo  init -u  git://repo-server/tv608/manifest.git
# /bin/repo  sync


可以用 -m 参数来选择获取 repository 中的某一个特定的 manifest 文件,如果不具体指定,那么表示为默认的 


namifest 文件 (default.xml)


repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml


(有诸多供我们选择的manifest文件,所有的manifest文件都放在目录.repo/manifests中,该目录本身亦被git所管


理,你可以cd进去看看)


可以用 -b 参数来指定某个manifest 分支。


repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0


你会发现.repo/manifests是个被git管理的仓库,这里放的是所有的manifest文件(*.xml),因为被git管理,固


然有 分支,-b可以切换到你想要的分支然后再下载相关的xml文件,当然具体下载那个xml还要看-m参数了,所以如果你仅仅


指定-b而没有-m的话,就是下 载-b指定分支下的default.xml文件


如果不指定-b参数,那么会默认使用master分支


4. 如果git clone git://sss/sss  不能够的话,是没有启动守护进程,没有运行远端访问
开启远程git协议访问控制 // 其实git clone git@gitserver_ir:project.git 这样的格式是使用ssh登录git服务


器,是在ssh通道上面执行git协议的

# sudo apt-get install git-daemon-run
安装后会创建下面两个用户
# cat /etc/passwd | grep git
gitlog:x:117:65534::/nonexistent:/bin/false
gitdaemon:x:118:65534::/nonexistent:/bin/false

# dpkg -L git-daemon-run    -- 查看安装包安装了哪些文件

# vim /etc/sv/git-daemon/run 
修改--export-all  --base-path=/opt/git    为你git 的仓库根目录,并添加--export-all参数
加入 --export-all 后,在git仓库中就不必创建git-daemon-export-ok文件。


--enable=receive-pack   加入这个参数后,客户可以提交代码更新,默认是不允许的


# sudo sv stop git-daemon
# sudo sv start git-daemon
或者:
#sudo runsv git-daemon


# git clone git://serverip/project
or
# git clone git://serverip/project.git


5.  repo 配置 是通过在所有的库上面建同样的分支呢,还是通过repo库本身不同版本的xml来控制呢?


6. repo 客户端使用流程
a. 版本管理基本流程
     与知识库交互的基本流程如下:
     1、建立新的分支——repo start
     2、编辑代码文件
     3、stage文件更改——git add
     4、提交更改——git commit
     5、提交更改到review服务器——repo upload


                                            
b. 任务处理
     下面详细介绍了如何使用Repo和Git命令。
     1) 同步本地客户端
      同步所有的工程文件——repo sync
      同步特定的工程文件——repo sync PROJECT0 PROJECT1 PROJECT2 ...
     2) 创建分支
     每当开始编辑文件比如开始修改bug和添加新的功能,需要在本地创建特定的分支。分支并不是原始文件的拷贝,它作


为特定提交的标示,该标示创建本地分支并在分支间进行轻量级切换,分支可以隔绝一个方面的更改。
     创建分支——repo start BRANCH_NAME
     验证新分支的有效性——repo status
    3) 分支使用
     分配分支到特定工程——repo start BRANCH_NAME PROJECT
     本地环境中切换分支——git checkout BRANCH_NAME
     列出所有分支——git branch or repo branches
   4) staging文件
     默认情况下,git工具提示但并不跟踪工程的更改,为了通知git保存代码的变化,我们必须commit代码,即“staging


”。
    stage文件更改——git add
    该命令可以接受任何文件和工程目录,git添加文件到git知识库,并且stage文件更改、删除的记录。
   5) 浏览客户端状态
    展示文件状态——repo status
    展示未提交的文件编辑——repo diff
   6) 提交更改
    git中commit是版本管理的基本单元,包含了工程的目录结构和文件内容。
    创建commit——git commit
    执行该命令后editor中弹出commit提示信息,最好能够提供有益的帮助信息。如果没有添加log信息,该次commit提交会


被遗弃。
   7) 提交更改到Gerrit
    upload之前更新最新的版本——repo sync
    接着提交代码——repo upload
    之后呈现我们提交的更改,并提示我们选择分支。
   8) 处理代码冲突
    提交代码时如果遇到冲突,需要执行以下操作:进入相关的工程目录,针对冲突的文件运行git add和git commit命令,


恢复更改。如下:
     git add .
     git commit 
     git rebase --continue
    恢复更改后再次重复整个更新:
     repo sync PROJECT0 PROJECT1 ... PROJECTN
    如果本地又对刚刚提交的代码进行了修改,提交时可以直接覆盖上次的提交,执行如下命令:
    git add files
    git commit  --amend
    repo upload
   9) 清除客户端文件
    merge代码到Gerrit之后,更新本地的工作目录:
    repo sync
   安全清除陈旧的分支执行以下命令:
    repo prune
   想恢复代码到以前的分支,可以执行以下命令:
    git log
    git reset hard
  10) 删除客户端代码
   由于代码所有的代码信息存储在本地,我们仅需要删除目录即可完成:
    rm -rf WORKING_DIRECTORY
   删除本地代码后将会永久的删除所有提交的更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值