2

我在 github 上有一个库,大约一年前,我完全重写了不向后兼容的应用程序。它位于一个名为“结构化”的分支上。现在大多数安装图书馆的人都在使用该分支,我想让它成为主人并将当前主人移动到“旧版”。

我不希望旧主人的人能够快进到新主人,因为这肯定会破坏他们的应用程序。是否可以将它们转移到遗留分支,或者至少抛出异常并显示一条消息告诉他们签出遗留分支?

4

3 回答 3

1

除非你实现一个钩子,否则我认为这是不可能的,但这可能不值得。

我想我只是在我的服务器上克隆存储库,保留旧存储库原样,如果需要,拉错误修复并为新的“结构化”库创建另一个存储库。

于 2012-06-06T18:54:28.233 回答
0

没有办法转移它们,因为 Git 分支只是标签:没有办法判断新master分支与旧分支有什么不同。

master我认为如果客户不希望它破坏它们,那么从分支克隆是一个坏主意。为此,您应该有发布分支或标签,然后人们可以从中克隆,他们会知道他们有一个稳定的分支,该分支只能获得向后兼容的更新(如果是分支)或永远不会更改(如果一个标签)。

至于警告,这也是不可能的,因为当有人从服务器上获取数据时,没有任何钩子可以放在服务器上运行(仅用于推送)。你必须在你的 GitHub 页面上清楚地写出来。

另一个想法是修改最后一次提交master,使其不再是旧的快进master;并以引起冲突的方式进行。这样,每当有人与老主人拉扯时,他们就会发生冲突,并且必须检查发生了什么。

于 2012-06-06T18:55:41.163 回答
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++,您的语言具有可以实现类似行为的功能。

于 2012-06-06T19:06:44.403 回答