云服务器内容精选
-
配置项目级的合并请求规则 合并请求规则包含四个部分:合入机制、合入条件、MR设置和合并模式。 表2 合入机制的参数说明 参数 说明 合入机制 必填参数。包含两个选项: 打分机制:包含代码检视,以打分为基础,可设置最低合入分值,分值范围为0~5分。只有分数和必选评审达到门禁条件时,代码才可以合入,勾选打分机制时需设置最低分值。 审核机制:包含代码检视和合并审核两个步骤,以通过人数为基础,只有审核通过的人数达到门禁条件时,代码才可以合入。 说明: 合并请求默认为“审核机制”,可手动切换为“打分机制”。 修改合入机制后,会改变合并请求的工作流,但之前创建的合并请求仍保留之前的合入机制。 表3 合入条件参数说明 参数 说明 合入条件 非必填参数。包括两个选项: 勾选“评审问题全部解决才能合入”,如果评审意见被勾选为“这是一个需要被解决的问题”,则合入条件会提示“存在未解决的评审意见”且“合入”按钮置灰;如果只是一个普通的评审意见,则不存在“已解决”开关,也不会被合入条件拦截。 如果勾选“必须与CodeArts Req关联”,被关联的所有E2E工作项校验必须通过;一个MR只能关联一个单号;可添加多个分支配置合并请求策略,支持手动输入通配符匹配,按回车确认,如:*-stable或production/*。 表4 MR设置参数说明 参数 说明 禁止合入自己创建的合并请求 勾选后,用户在查看自己创建的MR时,“合入”按钮置灰,表示自己无法合入代码,需要找其他有合入权限的人合入。 禁止审核自己创建的合并请求 勾选后,用户在查看自己创建的MR时,“审核”按钮置灰,自己无法审核,需要找其他有审核权限的人审核。 禁止检视自己创建的合并请求 勾选后,用户在查看自己创建的MR时,“检视”按钮置灰,自己无法检视,需要找其他有检视权限的人检视。 允许仓库管理员强制合入 项目创建者和管理员有强制合入的权限,当合入条件不满足,也可通过“强行合并”按钮合入MR。 允许合并请求合并或关闭后继续做代码检视和评论 勾选后,已合入MR可继续做代码检视、评论。 是否将自动合并的MR状态标记为关闭状态(如果B MR中的所有commits都包含在A MR中,那么当A MR合并后,则B MR会自动合并。默认B MR会标记为merged状态,可以通过该选项控制将B MR标记为Closed状态) 未勾选时,自动合并的MR被标记为已合并。 勾选后,自动合并的MR的状态将会标记为关闭状态。 不能重新打开一个已经关闭的合并请求 勾选后,当分支合并请求已经关闭后,不能将其重新置回“开启”状态,右上方的“重开”按钮将隐藏。 此设置一般用于流程管控,使历史评审不会被篡改。 新建合并请求,默认开启合并后删除源分支 勾选成功后,新建MR默认开启“合并后删除源分支”。开启且合并成功后,源分支将被删除。 已经设置成保护分支的源分支不会被删除。 此设置对历史合入请求,不会生效,不必担心启用此设置会丢失分支。 禁止Squash合并 勾选成功后,“Squash合并”按钮被禁止,且合并请求中无该功能使用入口。 合入MR时禁止Squash合并。 新建合并请求,默认开启Squash合并 Squash合并是指Git在做两个分支间的合并时,会把被合并分支上的所有变更“压缩(squash)”成一个提交,追加到当前分支的后面作为“合并提交”(merge commit),可以使分支变得简洁。Squash合并和普通Merge合并唯一的区别体现在提交历史上:对于普通Merge而言,在当前分支上的合并提交通常会有两个提交信息;而Squash Merge只有一个提交信息。 表5 合并模式的参数表 参数 说明 通过Merge Commit合并 勾选后,每次合并操作都会产生一个merge commit点,只要没有检测到冲突就能够执行合并操作。即不管基线点是不是最新的点,无冲突就可以合并。 Squash合并不产生Merge节点:勾选后,squash合并不会产生merge节点。 使用MR合入者生成Merge Commit :勾选后,可用于记录Commit信息。 使用MR创建者生成Merge Commit: 勾选后,可用于记录Commit信息。 通过Merge commit 合并(记录半线性历史) 勾选后,每次合并操作会记录一个merge commit提交,但是与“通过Merge commit合并”不同,必须基于目标分支最新的commit提交点进行提交,否则会提示开发者进行rebase操作。这种合并模式下可以非常确定一点,如果merge request能够正确构建,合并完成后目标分支也能够正确构建。 Fast-forward 合并 勾选后,每次合并操作不会记录一个merge commit提交,且必须基于目标分支最新的commit提交点进行提交,否则会提示开发者进行rebase操作。
-
MR预合并概述 MR预合并指的是在Repo生成一个临时合并节点,MR创建后且代码还没有合入,用户可通过自定义WebHook、流水线等下载插件的脚本,下载Repo预合并后的代码用于代码构建等操作。 MR预合并优势 当一个合并请求需要拉起几十或上百台服务器的构建,本地客户端做预合并可能会与服务端产生的结果不一致,导致构建代码获取不够准确、构建结果不准确等问题。通过开启“MR预合并”,可以解决该实时性问题,并且构建脚本命令相比本地预合并脚本更简单,开发人员更容易上手。
-
使用示例 下述示例展示了“开启MR预合并”和“未开启MR预合并”的脚本,可见“开启MR预合并”的脚本更简洁、高效。 “开启MR预合并”,当MR创建后,则服务端会帮助用户生成一个临时合并节点,进而用户可以直接下载已临时合并的代码。具体操作步骤如下: 初始化本地代码仓,其中repo_url为合并请求仓库地址。 git init git remote add origin ${repo_url} 拉取服务端临时合并节点到本地分支。如下图所示,合并请求标题下的“10”即为“repo_MR_iid”,“merge-requests/${repo_MR_iid}/merge”表示临时合并节点,“${repo_MR_iid}/merge”表示本地分支。 git fetch origin +refs/merge-requests/${repo_MR_iid}/merge:refs/remotes/origin/${repo_MR_iid}/merge 图1 合并请求IID 检出分支,即可获得预合并后代码 git checkout ${repo_MR_iid}/merge “未开启MR预合并”,用户需要在客户端分别下载合并请求源分支、合并请求目标分支的代码,并在构建执行机自行完成合并动作。具体操作步骤如下: 初始化本地代码仓,其中repo_url为合并请求仓库地址。 git init git remote add origin ${repo_url} 拉取并检出合并请求目标分支,其中,“repoTargetBranch”为合并请求目标分支。 git fetch origin +refs/heads/${repoTargetBranch}:refs/remotes/origin/${repoTargetBranch} git checkout ${repoTargetBranch} 拉取合并请求源分支到本地分支,如下图所示,合并请求标题下的“10”即为“repo_MR_iid”,“merge-requests/${repo_MR_iid}/head”表示合并请求源分支,“${repo_MR_iid}/head”表示本地分支。 git fetch origin +refs/merge-requests/${repo_MR_iid}/head:refs/remotes/origin/${repo_MR_iid}/head 图2 合并请求IID 本地执行合并,即可获得预合并后代码。 git merge refs/remotes/origin/${repo_MR_iid}/head --no-edit
-
使用URL导Git仓到Repo 进入CodeArts Repo首页后,单击“新建仓库”,在“归属项目”下拉框中选择已有的项目或者“新建项目”。 仓库类型选择“导入仓库”,导入方式选择“Git Url”,参数填写请参考表1。 表1 “获取授权”参数填写 字段名称 说明 源仓库路径 该参数必填,该参数表示要导入的仓库路径。源仓库路径需要以(http://)或(https://)开头,以(.git)结尾。 说明: 如果仓库过大或者网络较差时,仓库导入时间可能会超过30min。如果出现导入超时,建议使用客户端clone/push来处理,具体可参考导入外部仓库提示超时。 该功能需要保证被导入的仓库 域名 和服务节点网络连通。 源仓库访问权限 必填。分两种情况填写: 如果您导入的源仓可见范围是对所有访客公开,勾选“不需要校验权限”。 如果您导入的源仓可见范围是私仓,请勾选“需要校验权限”。当前支持两种鉴权方式,“通过服务扩展点”和“通过用户名密码授权”,参数填写请参考校验导仓权限。 单击“下一步”,进入“填写基本信息”页,请参考表格填写参数。 请参考表1 同步仓库设置的参数表格,填写“同步仓库”设置参数。 填写完参数后,会自动跳转到新建仓库的“代码”页面。 如果在代码仓库列表页,新建代码仓库名称颜色为灰色,且仓库名称旁有红色感叹号,表示该仓库导入失败,可能原因:用户名或者密码/Access Token错误。可以将该代码仓删除,按照如上步骤操作,重新导入外部仓库。 当前Git支持的外部导入源包括:bitbucket.org、code.aliyun.com、coding.net、git.qcloud.com、gitee.com、github.com、gitlab.com、visualstudio.com、xiaolvyun.baidu.com。 在新建代码仓库后,仅有创建者能够访问该仓库。其他项目成员需要手动添加到仓库中,并分配相应的权限。因此,您需要根据需求,手动为代码仓库添加成员并为新增成员配置访问权限。 父主题: 迁移第三方Git仓到Repo
-
通过E2E单号关联门禁 如果为目标仓库开启了E2E单号关联,即勾选“必须与CodeArts Req关联”。执行如下步骤,完成E2E单号关联: 进入目标仓库,切换到“合并请求”页签,单击目标合并请求名称,进入目标合并请求。 单击“详情”页中“关联工作项”旁的图标,搜索并选择目标工作项。 单击“确定”,完成E2E单号关联。 当合并请求成功关联工作项时,门禁显示为“E2E单号关联通过”。 如果您在合并代码的时候提示单个仓库容量超过2GB,不允许合并申请,请检查是否有Git提交的缓存文件所致。 MR关联工作项最大数量为100个。
-
如何避免冲突的产生? 代码提交、合并冲突经常发生,但只要在代码开发前,做好仓库预处理工作,就能有效地避免冲突的产生。 在示例:冲突的产生与解决中,开发者02(02_dev)成功的解决了提交远程仓库时遇到的冲突问题,此时他的本地仓库与远程仓库的最新版本内容是一样的,但是开发者01(01_dev)本地仓库和远程仓库仍然是有版本差异的,此时如果直接推送本地仓库(push),仍然会产生冲突,那么如何避免呢? 方式一(推荐新手使用): 如果开发者本地的仓库不常更新使用,在做本地修改时,可以重新clone一份远程仓库的内容到本地,修改后再次提交,这样简单直接的解决了版本差异问题,但缺点是如果仓库较大、更新记录较多,clone过程将耗费一定的时间。 方式二: 如果开发者每天都要对本地仓库进行修改,则建议在本地新建一条开发分支进行代码修改,在要提交远程仓库时,切换到master分支并将远程仓库的最新master分支内容拉取到本地,在本地进行分支合并,对产生的冲突进行修复,成功将内容合并到master分支后,再提交到远程仓库。
-
如何解决代码提交冲突? 当代码提交冲突产生时,您可以将远程代码仓库拉取(pull)到本地仓库的工作区,这时Git会将可以合并的修改内容进行合并,并将不能合并的文件内容进行提示,开发者只需要对提示的冲突内容进行修改即可再次推送到远程仓库(add → commit → push),这时冲突就解决完毕了。 如下图所示,在做拉取(pull)操作时,Git提示您,一个文件合并时产生了冲突。 在修改冲突文件时应该考虑清楚,必要时要与冲突方联系协商解决,避免覆盖他人代码。 git pull可以理解为 git fetch 的操作 + git merge的操作,其详细说明如下: git fetch origin master #从远程主机的master分支拉取最新内容 git merge FETCH_HEAD #将拉取下来的最新内容合并到当前所在的分支中 在merge的时候,会将有冲突不能合并的内容做出提示。
-
在Windows中使用密钥对方式进行加密、解密 下载并安装最新的Windows Git客户端,下载最新基于Windows的git-crypt,把下载到的exe文件放到Git安装目录下的“cmd”文件夹中。 执行如下命令,在本地生成密钥对。 打开“Git Bash”,并进入本地代码仓库。 执行如下命令,在Git代码仓库中创建“.git-crypt”文件夹,文件夹包含加密文件所需的密钥和配置文件。 git-crypt init 执行如下命令,把密钥文件导出到C:/test目录并命名为KeyFile。 git-crypt export-key /c/test/keyfile 执行完上述步骤,您可以到密钥导出的文件路径进行验证,确认是否已成功生成密钥。持有这个密钥文件的计算机,可以解密对应的加密文件。 执行如下命令,为代码仓库配置加密范围。 在仓库的根目录下新建一个名为“.gitattributes”的文件。 打开“.gitattributes”文件,设置加密范围,语法如下。 文件名或文件范围 filter=git-crypt diff=git-crypt 下面给出四个示例。 FT/file01.txt filter=git-crypt diff=git-crypt #将特定文件加密,这里加密的是FT文件夹下的file01.txt *.java filter=git-crypt diff=git-crypt #将 .java类型文件加密 G* filter=git-crypt diff=git-crypt #将 文件名为 G 开头的文件加密 ForTest/** filter=git-crypt diff=git-crypt #将 ForTest 文件夹下的文件加密 如果创建.gitattributes文件时提示“必须键入文件名”,可以将文件名填写成 “.gitattributes.”即可创建成功,如果使用Linux指令创建文件,则不会出现此问题。 注意不要将.gitattributes保存成txt文件,否则配置会无效。 进行文件加密。 在仓库根目录打开Git bash,执行如下指令即可完成加密,加密后可看到目前文件的加密状态。 git-crypt status 加密执行后,在您的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为您本地仓库有密钥存在。 这时您可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。 加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。 “git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,Git会对此设定涉及的未加密文件做出提示(见上图中的Warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”。 在让团队合作中 -f (强制执行)具有一定的风险,请谨慎使用。 进行文件解密。 确认本机器Git安装路径下存在git-crypt文件。 将仓库从代码托管克隆到本地。 获取加密此仓库的密钥文件,并存储于本地计算机。 进入仓库目录,右键打开Git bash。 执行解密指令,执行后无回显,则为执行成功。 git-crypt unlock /C/test/KeyFile #请将 /C/test/KeyFile 更换为您实际的密钥存储路径
-
Linux、Mac平台的git-crypt、GPG安装 Linux平台安装git-crypt、GPG Linux安装依赖环境。 Software Debian/Ubuntu package RHEL/CentOS package Make make make A C++11 compiler (e.g. gcc 4.9+) g++ gcc-c++ OpenSSL development files libssl-dev openssl-devel Linux环境下,使用源码编译方式安装git-crypt。 下载源码 make make install 安装到指定目录。 make install PREFIX=/usr/local Linux环境下,使用源码编译方式安装GPG。 下载源码 ./configure make make install 使用Debian包安装git-crypt。 下载源码 Debian打包可以在项目Git仓库的“debian”分支中找到。 软件包是用“git-buildpackage”构建的,如下所示。 git checkout debian git-buildpackage -uc -us Debian环境下使用构建包安装GPG。 sudo apt-get install gnupg MAC平台安装git-crypt、GPG macOS上安装git-crypt。 使用 brew 软件包管理器,只需运行如下命令。 brew install git-crypt macOS上安装GPG。 使用 brew 软件包管理器,只需运行如下命令。 brew install GPG
-
git-crypt加密在团队合作中的应用 很多时候,团队需要在代码仓库中存储限制公开的文件,这时可以优先考虑使用“CodeArts Repo” + “Git” + “git-crypt”的组合,来实现部分文件在仓库分布式开源中的加密。 通常,直接使用密钥对方式的加密就能满足限制部分文件访问的需要。 当团队需要将加密文件设置不同的秘密级别时,可以使用GPG方式加密,这种方式支持您对同一个仓库的不同文件使用不同的密钥加密,将不同密级的密钥分别随仓库共享给组织内的伙伴,即可实现文件的定向分级限制访问。
-
使用TortoiseGit克隆代码仓库到本地 访问CodeArts Repo首页。 进入要克隆的代码仓库主页,单击“克隆/下载”按钮,并复制SSH地址。 进入您的本地仓库目录下,右键选择“Git克隆”菜单选项。 在弹出的窗口中将步骤2复制的SSH地址粘贴到URL输入框中,勾选“加载Putty密钥”并选择安装TortoiseGit客户端时生成的私钥文件。 单击“确定”。如果您是第一次在TortoiseGit客户端克隆代码仓,系统会询问您是否信任远程仓库,单击“是”即可。
-
使用Git Bash克隆代码仓库到本地 SSH密钥是一种安全的身份验证方式,用于访问远程服务器。使用SSH密钥克隆代码仓可以避免每次都需要输入用户名和密码,提高克隆代码仓的效率。 访问CodeArts Repo首页。 进入要克隆的代码仓库主页,您可以先创建个人分支,再单击“克隆/下载”按钮,并复制SSH地址。 在本地Git Bash客户端,执行如下命令,进入您要克隆代码仓的地址,该命令表示克隆的代码仓将克隆到D盘的Repo文件夹下,您可以根据需要修改地址。 cd D:/Repo 执行如下命令,克隆代码仓到该目录下。 git clone 代码仓库的SSH地址 如果您是第一次克隆仓库,会询问您是否信任远程仓库,输入“yes”即可。 如果出现下图,说明克隆仓库成功。 图1 使用SSH密钥克隆代码仓成功示意图 如果在执行步骤3时,Git Bash报错“git@test.com: Permission denied.fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.”,表示您还未配置访问Repo的SSH密钥,请先配置SSH密钥,具体请参考配置SSH密钥。
-
查看仓库详情 在仓库列表中单击要查看的仓库名称,即可进入该仓库的详情页面, 代码托管服务 提供了丰富的控制台操作,详情如下。 表1 页签说明 功能页签 功能说明 仓库首页 用于展示仓库的容量、提交次数、分支数量、标签数量、成员数量、LFS使用量、创建时间、创建者、可见范围、仓库状态、readme文件、语言、语言占比等信息。 代码 文件列表:支持新建文件、新建目录、新建子模块、上传文件、在线修改文件、修改追溯和查看提交历史等操作。 提交:支持查看提交记录及仓库网络图。 分支:支持在控制台管理分支。 Tags:支持在控制台管理标签。 对比:支持通过对比查看分支之间或标签版本之间发生的代码变化。 合并请求 支持在控制台管理分支的合并请求。 评审记录 支持查看合并请求的评审记录与Commit的评审记录。 关联工作项 所关联工作项的列表,其可设置与需求管理中工作项的联动,提升效率。 仓库统计 仓库提交记录的可视化图表,主要展现了代码贡献度等信息。 动态 支持查看仓库动态信息。 成员 支持对成员的管理,具体信息如下: 成员列表”、“成员组列表”“待审核”和“添加成员”位于仓库详情的“成员”页签下。 “成员列表”用于展示仓库中所有成员“用户名”、“用户来源”、“项目角色”、“仓库角色”和“操作”。 “成员组列表”用于展示仓库所有成员组的“成员组名称”、“成员数量”、“描述”和“操作”。 “待审核”用于展示即将加入仓库中待审核成员,包括“用户名”、“用户昵称”、“企业用户”、“项目角色”、“仓库角色”和“操作”。“待审核”成员可被拥有“添加成员”权限的人设置为“同意”或“拒绝”。 “添加成员”用于仓库添加成员或添加成员组。 设置 此仓库的设置入口。仓库内的仓库成员可以查看该页面,仓库成员是否具有仓库设置权限,请参考“权限管理”。 另外仓库详情页框架上还提供以下功能的快捷入口: 设置构建:新建编译构建任务入口。 IDE Online:可使用IDE Online打开代码(目前 免费体验 ,仅支持北京一、北京四及大连局点)。 关注:单击可关注该仓库,关注的仓库会在仓库列表置顶。 Fork:会显示目前仓库有几个Fork出的仓库,单击弹出“Fork代码仓库”页面。 克隆/下载:可获取仓库的SSH地址、HTTPS地址,也可以直接下载代码压缩包。 代码托管“吸顶”功能,当用户的仓库界面长度大于窗口长度,向下滑动鼠标滚轮后,仓库页签置顶,下图中红框位置被折叠,便于查看仓库信息,向上滑动鼠标滚轮后,界面恢复。 代码检查状态显示规则: 当用户有代码检查权限时,仓库名称后显示代码检查状态。 当用户无代码检查权限时,仓库名称后不显示代码检查状态。 构建状态显示规则: 当用户无构建权限 仓库页面上方只显示“设置构建”按钮。 当用户有构建权限 如果没有设置构建,则仓库页面上方显示“设置构建”按钮。 如果设置了构建,则会根据构建任务执行情况在仓库页面上方显示的状态有:“运行构建任务”、“构建进行中”、“构建执行失败”、“构建执行成功”。 父主题: 设置仓库
-
查看仓库的动态 在仓库详情中的“动态”页签,可以查看截止当前仓库的全部动态。 全部:展示截止当前该仓库的所有操作记录。 推送:展示截至当前该仓库所有的推送操作记录,例如推送代码、新建/删除分支等。 合并请求:展示截至当前该仓库所有合并请求的操作记录,单击合并请求的序号可查看详情,例如新建/关闭/重开/合入合并请求等。 检视意见:展示截至当前该仓库所有检视意见记录,单击提交号可查看详情,例如添加/删除检视意见等。 成员:展示截至当前该仓库所有成员的管理记录,例如添加/移除成员、编辑成员权限等。 展示内容为操作者、具体的操作内容及操作时间。 支持选择时间范围、操作人等条件进行筛选查询。
-
在控制台管理标签 在控制台的标签列表中,可查看该远程仓库中的全量标签并进行如下操作。 单击“标签名”,跳转到该标签对应版本的文件列表。 单击“提交号”,跳转到该次提交(commit)的详情页面。 单击,可下载tar.gz或zip格式的被标签版本的文件包。 单击,可以将此标签从代码托管仓库删除(想从本地删除请clone、pull或本地手动-d删除)。 如果仓库设置IP白名单,则只有IP白名单内的机器才可以在界面下载仓库源码,如果仓库没有设置IP白名单,则均可在界面下载仓库源码。 在控制台创建分支时,您可以选择基于某个标签去创建分支。 在控制台中,单击“代码”页签,单击目标文件的“文件名称”,单击文件的“对比”页签,可在该文件的提交记录之间做差异对比。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格