归档:构建服务 Git

跳转到:导航搜索
Icon-obsolete.png 本文关于开放构建服务的文档已过时!
您可以在 https://github.com/openSUSE/open-build-service/blob/master/CONTRIBUTING.md 上找到最新的信息

获取构建服务代码

从 github 部署所需的部分

构建服务托管在 openSUSE github 项目 中的多个仓库中

  • osc -- osc 命令行客户端
  • build -- 用于执行构建的构建脚本

服务器组件

  • OBS -- 构建服务本身
  • obs-sign -- 签名守护进程


附加仓库

以下部分并非 OBS 的官方组成部分,但对于某些任务可能有所帮助

  • yabsc -- 一个 GUI 客户端,重用 osc 库。

检出

可以通过以下命令由任何人进行克隆。将 $MODULE 替换为 osc、build 或 build-service 等

git clone git://github.com/openSUSE/$MOBDULE.git

其中一些仓库包含进一步的仓库,因此您还应该运行

git submodule init
git submodule update

在拉取的目录内。

客户端组件,如 osc 或 build,在拉取后可以直接工作。要运行服务器组件,您需要继续阅读。

仅运行 webui

教程 逐步解释如何检出 webui 代码,如何使其在本地运行,以及如何将源代码更改贡献回主项目。

运行整个服务器

运行后端

运行 api

开发者示例 git 命令

配置设置

一些有用的设置,将被写入您的 ~/.gitconfig

 git config --global branch.master.merge refs/heads/master
 git config --global branch.master.remote origin
 git config --global user.name "FirstName LastName"
 git config --global user.email "user@example.com"

示例命令

一些用于处理代码的示例命令。即使您没有推送权限,本地提交也可以工作。

只读检出

 git clone git://github.com/openSUSE/osc.git
 cd osc
 ./osc-wrapper.py -h

读/写检出(需要上传 ssh 密钥)

 git clone git@github.com/openSUSE/osc.git

Update

 git pull

提交到您的仓库

 git commit -a  # -a for all files

上传您的更改(需要远程写入权限)

 git push

显示上次提交

 git show HEAD

显示所有分支

coolo@desdemona#osc>git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/jw
  remotes/origin/master

检出分支(第一次)

 # note that this is all locally, no server contacted
 git checkout -t origin/jw

切换分支

 # all inplace
 git checkout master
 git checkout jw

合并另一个分支(简短方式)

git merge origin/master

合并另一个分支(长方式)

coolo@desdemona#osc>git merge origin/jw
Auto-merging NEWS
CONFLICT (content): Merge conflict in NEWS
coolo@desdemona#osc>eclipse NEWS
coolo@desdemona#osc>git diff NEWS # see diffs against merge point
coolo@desdemona#osc>git add NEWS # mark as resolved
coolo@desdemona#osc>git commit # commit manual merge

请注意“origin”,每个远程仓库都有一个名称。可以有多个。由于您可以克隆仓库,您也可以注册多个“clone”仓库,然后在您的仓库中本地合并更改并将其推送到第 3 个仓库 - 正如我在开头所说:git 功能强大且复杂。因此,从简单的东西开始,并熟悉这些命令。您也可以在 gitorious 上克隆仓库,并随意在这些克隆中进行操作 - 如果出现问题,可以在一秒钟内丢弃它们:)


git diff 问题

  • 我如何确保我不会撤销 origin/master 中的修复?
    • 除非您明确执行 git revert,否则不会发生。
  • 当前分支头与上次合并的差异点
    • git diff abcdef1234 使用 git log 中的上次合并的提交 ID
  • 当前分支头与 origin/master 头部的差异点
    • git diff abcdef1234..origin/master 使用 git log 中的上次合并的提交 ID
  • 当前分支头与当前 origin/master 头部的差异
    • 只需 git diff origin/master