我在github上有一个库,大约一年前我完全重写了不向后兼容的应用程序。它位于一个名为“结构化”的分支上。 现在,大多数正在安装库的人正在使用该分支,我希望将其作为主分支并将当前主服务器移至“遗留”。
我不希望那些在老主人身上的人能够快速前进到新主人,因为这肯定会破坏他们的应用程序。是否可以将它们转移到旧分支,或者至少抛出异常并显示一条消息,告诉他们签出旧分支?
答案 0 :(得分:1)
我认为除非你实现一个钩子,否则它是可能的,但它可能不值得。
我想我只是在我的服务器上克隆repo,保留原来的repo,如果需要的话就拉错修复程序,并为新的“结构化”库创建另一个repo。
答案 1 :(得分:0)
没有办法转移它们,因为Git分支只是标签:没有办法告诉新的master
分支与旧分支不同。
我认为如果客户端不希望它破坏它们,那么从master
分支进行克隆是个坏主意。您应该为此目的发布分支或标记,然后人们可以从它们克隆,他们会知道他们有一个稳定的分支,只能获得向后兼容的更新(如果是分支)或永远不会更改(如果是标签)。
至于警告,这是不可能的,因为没有钩子,当有人从中取出时,你可以把它放在服务器上(只有你可以推送)。你必须在GitHub页面上清楚地写出来。
另一个想法是修改master
中的最后一次提交,这样它就不再是旧master
的快进了;并以导致冲突的方式进行。这样,每当有老主人的人拉扯时,他们就会发生冲突并且必须检查发生了什么。
答案 2 :(得分:0)
至于问题的“转移”部分,你总是可以做这样的事情作为新主人的第一次提交:
#ifndef IMPLEMENTED_STRUCTURED
#error "The master branch of project x has been completely rewritten and will break legacy applications. If you are unable to update your application, switch to the legacy branch of this project and your code should continue working as before. If you want to use the new structured code, simply add a preprocessor definition for IMPLEMENTED_STRUCTURED to get rid of this error message."
#endif
这将使任何人的代码成功编译,直到他们阅读消息并决定他们想要采取的行动。
希望如果您没有使用C / C ++,您的语言可以实现类似的行为。