中央回购级别的git符号参考存储



想法是让dev_release_branch一直充当该环境的最新发布分支的别名(例如dev)。

并通过一些惯例在每次发布后创建新的分支机构;以在每次完成迁移或发布到相应en之后更新symb-ref。

git symbolic-ref -m "Updating rel branch ref to new" dev_rel_3rd_Nov dev_release_branch

想要存储引用&它在中央存储库中的映射名称。有没有一种方法可以实现这一点,因为简单的git push HEAD:refs/for/dev_branch无法通过

这是为了支持增量发布过程&因此,通过比较2个分支名称散列,计算更改的文件将更容易。。

谢谢!

希望同时存储引用&它在中央存储库中的映射名称。有没有办法做到这一点。。。

不是通过Git协议从客户端发送的。

此外,git symbolic-ref是一个"管道"命令(用于脚本而非随意使用),因此,它需要您拼写出完整的引用,例如:

git symbolic-ref refs/heads/foo refs/heads/master

为什么答案是"不">

让我们创建一个合适的符号引用,并尝试推送它:

$ git branch xyz master
$ git symbolic-ref refs/heads/foo refs/heads/xyz
$ git push origin foo
To [url]
* [new branch]      foo -> xyz

现在,在origin:的服务器上

$ git branch
* master
xyz

我认为,这就是你所观察到的,导致你说:

简单git push HEAD:refs/for/dev_branch失败

这里的问题是push协议实际上没有办法推送符号引用。该协议由一系列将引用名称设置为特定哈希ID的请求组成。符号引用是指设置为而非哈希ID的字符串的引用。

这意味着从客户端,在服务器上创建新的符号引用的唯一方法是直接在该服务器上运行Git命令,例如:

ssh server "cd path/to/git/repo; git symbolic-ref ..."

fetch协议确实允许检索符号引用(在现代Git中),但推送协议不允许设置它们。

正如torek所回答的,这是不可能的。

但对我来说,这听起来像是一个XY问题

您的实际问题似乎是可以解决的:只需有一个标记dev_release_branch,并在每次发布后更新它(在tagpush上使用-f)。然后可以创造性地使用git loggit show或通过.git/refs进行的一些脚本编译来找到相应的单个分支名称。

相关内容

  • 没有找到相关文章

最新更新