我习惯使用git单个存储库.但是,我最近一直在涉及Android开发,我正试图解决这个问题repo.我已经通过在.repo/local_manifests目录中创建xmls来设置一些自定义git repos (我正在使用repo 1.19)并且repo sync工作正常.
当我查看自定义git repos时,他们说# Not currently on any branch.这看起来就像我使用命令git checkout abcd1234(检查提交abcd1234)而不是git checkout origin/master.至于做出改变,我不知道如何回归原点.这是我正常的git工作流程.
git checkout origin/master
#make changes to working directory
git add .
git commit -m 'useful message'
#assume time has passed and there could be changes upstream
git fetch
git rebase origin/master
git push origin master
Run Code Online (Sandbox Code Playgroud)
既然我不再在技术上分支,我怎么能推动变化?我知道有一个工具,repo upload但我不确定它是如何工作的.我从未使用过Gerrit,但也许值得设置,以便其他团队成员可以在将代码推送到Github之前查看代码.老实说,我仍然有一个非常抽象的理解repo和Gerrit.
根据这个答案和我自己的问题,我有一个简单的(希望如此)问题.
如果我正在推动一个特定的分支,所有必需的refs设置正确:
git checkout 82-blah-blah
git push origin HEAD:refs/for/82-blah-blah
Run Code Online (Sandbox Code Playgroud)
为什么我总是得到:
! [remote rejected] HEAD -> refs/for/82-blah-blah (branch 82-blah-blah not found)
Run Code Online (Sandbox Code Playgroud)
我总是要去Gerrit的UI并手动创建该分支?
这不是一个明显的步骤,Gerrit可以简单地自动化吗?或者我错过了什么?
我做了一些更改,提交了它们并将分支推送到Gerrit(git push gerrit).现在我的更改没有出现在Gerrit中,我认为这是因为我手动推送更改而不是使用git review.当我git review现在跑,我得到这个错误:
remote: Processing changes: refs: 1, done
To ssh://user@gerrit-host:29418/Project
! [remote rejected] HEAD -> refs/publish/master (no new changes)
error: failed to push some refs to 'ssh://user@gerrit-host:29418/Project'
Run Code Online (Sandbox Code Playgroud)
我如何告诉Gerrit我的变更集需要进行审核?
如何更改TortoiseGit推送对话框的默认远程参考?通常是这样的master.refs/for/master当我从组合键盘或键盘上推出时,我可以将其改为总是有效,但我希望保留我选择的参考号.我怎样才能做到这一点?

好的,所以这可能听起来有点奇怪,但在这里它.
我正在当地大学教授数据结构和算法实验室,并希望为我的学生提供各种流畅和有趣的体验.到目前为止,我使用了一个简单的git存储库,每个学生都分叉了,每当他们完成一个任务时,他们发出了一个push + pull请求,我会查看他们的代码,如果一切正常,我会将pull请求合并到main回购.这很好用,但我想做一些更有趣的事情.
该实验室正在用C语言教学(甚至不是C++)(不,我不想进入任何关于为什么另一种语言会更好的论战).我想要做的就是像学生制作的每次推动一样运行Jenkins构建,这可以验证手头任务的一些预定义测试.
例如,对于第2周,我会给他们一份带有列表的家庭作业.我想自己编写这个功课的测试,然后自动验证他们使用这些测试做了什么.
我有什么:
++一个非常好的'附加'到所有这些将是使用像声纳作为代码验证器和检查其分支内的重复代码(以查看是否有人复制了其他人的答案)
我是通过去Jenkins服务器,思考声纳等而走上正轨吗?我离开了吗?我不认为这是不可能的.它可能很难,是的,但这会让它变得有趣^^
我想要的'流量'是:
我代表亲爱的学生们,谢谢你们.
在Gerrit中,在下载部分的更改下,有一个部分允许您下载补丁文件:
使用git apply结果:
$ git apply 441eb56b.diff.base64
fatal: unrecognized input
Run Code Online (Sandbox Code Playgroud)
我使用什么命令来应用此补丁?
詹金斯似乎并没有自动提出需要从Gerrit审核的变更.
我们正在使用Gerrit Trigger.
此外,如果我尝试手动触发一些,似乎什么都没发生.
Gerrit Trigger管理区域中的"控制"似乎没有太多......闪烁"开始","停止"或"重新启动"
我出错的任何想法?
为了改进开发过程,我们的组织决定在开发工作流程中引入Gerrit.我是负责实施Gerrit服务器的人.互联网上提供的用户指南非常有助于将Gerrit实施到我们现有的工作流程中.我们使用Jenkins和Sonar作为非交互式用户来验证构建.但在处理存储库时,一个问题就出现了.大多数开源都使用gerrit-replication插件将最新代码复制到他们的公共代码库.使用GitLab公开这些公共存储库,以便用户可以克隆代码.在这里,我们不需要公共存储库,因为代码是在内部维护的.
将GitLab和Gerrit指向一个通用的git存储库位置是一个不错的选择吗?
任何帮助赞赏.
我试图将现有的回购添加到gerrit.我创建了一个空项目并试图推送它(git push ssh://admin@localhost:29418/project *:*).我收到此错误消息:
Counting objects: 14, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 384 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 3 (delta 1)
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 3, done
To ssh://admin@localhost:29418/project
! [remote rejected] origin/HEAD -> origin/HEAD (prohibited by Gerrit)
! [remote rejected] origin/master -> origin/master (prohibited by Gerrit)
! [remote rejected] origin/ref/for/master/testing -> origin/ref/for/master/testing (prohibited by Gerrit) …Run Code Online (Sandbox Code Playgroud) 我知道我缺乏基本的詹金斯概念,但以我目前的知识,很难成功地进行研究——也许你可以给我一些提示,如果需要的话,我可以用它来重新表述我的问题。
目前,我面临着这样一种情况:在具有多个构建节点的设置中,Jenkins 主计算机的磁盘空间不足,因为 Jenkins 在主节点和构建节点上都克隆了 git 存储库(并且主节点的空间有限)。这个问题解释了原因。
注意:主节点本身不构建任何东西 - 它只是将存储库克隆到本地工作区文件夹(我猜它只需要 Jenkinsfiles)。
通过作业配置并谷歌搜索这个问题,我找到了有关浅层和稀疏克隆的选项,或者使用Cleanup Plugin在构建之前或之后清理工作区的选项。但这些设置和插件只关心构建节点checkout(SCM)上完成的签出,而不是主节点。
但如果我想保持构建节点上的情况不变,但保持 Jenkins 主计算机上的工作区文件夹精简,我该如何解决这个问题?我必须寻找什么?
作为一个附带问题 - 是否有可能有“git Export”之类的东西?即.git在检查我需要的提交后删除文件夹?
如果这取决于我使用的作业类型,我将使用脚本化管道作业。