想法是让dev_release_branch一直扮演该环境的最新版本分支的别名(例如,dev)。
并且通过某些约定和每个版本创建新分支。每次完成迁移或发布到相应的en。
后更新symb refgit symbolic-ref -m "Updating rel branch ref to new" dev_rel_3rd_Nov dev_release_branch
想存储参考&它在中央存储库中的映射名称。有没有办法实现这一点,因为简单git push HEAD:refs/for/dev_branch
失败
这是为了支持增量发布过程&因此,通过比较2个分支名称哈希值,计算文件的更改会更容易。
谢谢!
答案 0 :(得分:1)
想存储参考&它在中央存储库中的映射名称。有没有办法实现这个......
不是来自客户端的Git协议。
另外,git symbolic-ref
是a "plumbing" command (meant for scripts rather than casual use),因此,它要求您拼出完整的引用,例如:
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中),但push协议不允许设置它们。
答案 1 :(得分:1)
Torek回答说,这是不可能的。
但对我而言,这听起来像是一个XY问题。
您的实际问题似乎是可以解决的:只需拥有一个标记dev_release_branch
并在每次发布后更新(使用-f
和tag
上的push
)。然后,可以创造性地使用git log
,git show
或通过.git/refs
点击一些脚本来查找相应的单个分支名称。