社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

GitHub:再见,master!

朱小厮的博客 • 6 年前 • 644 次点击  

点击上方“朱小厮的博客”,选择“设为星标”

后台回复"书",获取



GitHub宣布,自2020年10月1日起,在GitHub平台上创建的所有源代码存储库都将默认命名为 main ,而非原本的 master 。

近日,GitHub宣布,自2020年10月1日起,在GitHub平台上创建的所有源代码存储库都将默认命名为 main ,而非原本的 master 。
这一变化是什么原因?具体又是怎样的变化呢?接下来为你一一解答。
替换 master 等术语,开源项目在行动!
今年6月12日,谷歌浏览器开发人员 Una Kravets 的一条 Twitter 火了,内容是建议 GitHub 用 main 之类的中性术语替换 master ,并解释了提出这个建议的原因:
  • main 更短,简洁明了;

  • 容易被人记住;

  • 会让我的队友们感到舒适;

  • 不会让黑人在科技界感到被歧视;

GitHub 的 CEO 对此回应到:“提议非常好,我们已经在执行了。”

外媒 ZDNet 曾表示:继续使用带有种族色彩的词汇可能会加深种族歧视,这实在令人担忧。一些学者也认为:这些术语不仅反映了种族主义文化,而且还强化、合法化和延续了它。”因为美国 “Black Lives Matter” 运动愈演愈烈,技术界再次掀起了在源码、软件应用开发中删除此类词汇的浪潮。

因此 GitHub 于今年6月表示,公司正在努力以 main 之类的中性术语替换 master 一词,以避免不必要的联想到奴隶制。具体的更换有:master 和 slave 将被替换为 main/default/primary 和 secondary,whitelist 和 blacklist 则将被替换为 allow list 和 deny/exclude list 。 

除了 GitHub , Android 移动操作系统、 Go 编程语言, PHPUnit 和 Curl 等都已表示打算用中性词汇替换掉 blacklist/whitelist 。同样,OpenZFS 文件存储管理器也用合适的词语替换了原用于描述存储环境之间关系的 master/slave 术语。

与此同时,一些业界知名的开源项目也将其默认 Git 存储库的名称从 master 更改为 main、default、primary、root 等替代名称。

不过,值得注意的是,开源项目的名称修改也并非想象中那么简单。在今年6月,React Refresh Webpack Plugin 的开发者迅速将 master 改成 main ,却被一个程序员吐槽:因为在 Git 上下文中,单词 master 的用法与 master/slave 不同,导致所有程序都改变了,最后项目都崩了。

由此可见,修改存储库默认分支的名称并非一朝一夕的事,需要循序渐进。这正如同近日 GitHub 官宣的内容:将从10月1日起用 main 代替 master ,但将分阶段进行。

GitHub 用 main 取代 master 举措落地,开发者最关心的事情在这里

GitHub 以及庞大的 Git 社区都在考虑重命名源代码存储库的默认分支名称,而GitHub 选择用 main 取代 master ,来作为自己存储库的默认分支名称,并将分为几个阶段进行更改,以尽可能减少对现有项目的破坏。
GitHub 建议用户:如果您尚未重命名默认分支,可以考虑等到今年年底。我们正在投资开发工具,用来重命名现有存储库的默认分支,从而给维护者和贡献者提供无缝的体验。

以下是 GitHub 就此宣布的一些注意事项:

已更改部分
  • 已更新 GitHub.com :将包含已删除的分支名称的原版链接重定向到存储库新默认分支中的相应链接;

  • 已更新 GitHub Pages :可以从任何分支构建和部署;

注意:发布到特殊的 gh-pages 分支仍可以像以前一样工作,但是现在可以选择存储库中的其他任何分支作为发布源。
  • 添加了用户,组织和企业设置:为 GitHub.com 上所有新创建的存储库设置默认分支名称。

这些设置涵盖通过 GitHub.com 和 GitHub API 创建的存储库。Git 2.28 添加了类似的设置来控制在命令行上运行 git init 时使用的默认分支。在 Git 2.28 博客文章中可以了解更多有关新的 init.defaultBranch 的设置信息。

GitHub Desktop 还将在本月晚些时候为新存储库引入默认分支设置。

2020年10月1日:新创建的存储库都将默认为main

自2020年10月1日起,新创建的存储库都将使用 main 作为默认分支,而不是原本的 master 。但此更改不会影响任何现有存储库:现有存储库将继续保留与之前相同的默认分支。
但此更改可以随时选择退出,通过以下对应网址,可为用户,组织或企业的新存储库设置默认分支:
  • 对于用户,请访问 https://github.com/settings/repositories

  • 对于组织所有者,请访问 https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaults

  • 对于企业管理员,请访问 https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privileges

为什么选择用 main 替代?

main 是在 GitHub 上看到的最受欢迎的 master 替代词。并且 main 这个词汇很短,可以让用户形成良好的肌肉记忆;在很多种语言中翻译起来也很容易。
GitHub 目前正将 main 用于新创建的存储库以及正在迁移的存储库,例如 dependabot-core。

今年年底:无缝迁移现有存储库

重命名默认分支肯定会对现有存储库带来很多麻烦:
  • 打开拉请求需要重新定位到新分支

  • 草案发布需要重新定位到新分支

  • 分支机构保护策略需要转移到新分支机构

今年年底之前,GitHub 将使现有存储库全部无缝重命名其默认分支。当重命名分支机构后,GitHub 会重新定位未完成的PR和草稿版本、移动分支机构的保护政策等等——全部都将自动执行。并且,GitHub 还正在考虑将 git fetch 或 git clone 旧分支名称的用户重定向到新分支名称(带有警告和说明以更新其本地克隆)。

对这一举动的思考 

其实关于计算机术语的政治正确性并不是近几年才出现的话题,GitHub 在公众的督促下换掉 master 也不是首当其冲。

早在2004年,master/slave 就曾被全球语言检测机构评为年度最不政治正确的十大词汇之一,只是当时的软件开发和网络发展并没有如今这么发达,所以更换术语这类事就全靠自发。比如,2008年,开源软件 Drupal 宣布将 master/slave 重命名为 client/server ,理由是在有更好的替代方案时,继续使用冒犯性术语很不合时宜。之后一直到2018年,IETF 在草案当中,提出开源软件需要更改 master/slave 和 blacklist/whitelist 两项表述,计算机术语的使用才引起了广泛的关注。

因此同年,许多开发者就开始呼吁 Redis、谷歌、Python 这些开源软件厂商修改相关术语。

但其实反对的声音也一直很多。其中最重要的两个理由是:
  • 计算机源码中的 master、blacklist 等词语,并不包含种族色彩;

  • 更改的成本太大。

事实上那些倡议者们所追求的,并非完全不能使用“black”这个词,而是呼吁不要把“biack”作为“white”的对立面,传达出“不好”、“需要被限制”等这些负面含义。所以,当 master/slave出现在代码中,表达的又恰好是“主-从”关系,就难免让人想到奴隶制。

可是,究其根本,在计算机术语中的master、blacklist等词语,本身并不包含负面和歧视的意思,却因为误解而花费巨大成本修改术语,是否会有些许过犹不及的意味呢? 

参考链接
https://baijiahao.baidu.com/s?id=1669620192902455480&wfr=spider&for=pc
https://www.sohu.com/a/405073858_478315
https://www.jiangweishan.com/article/hulianwang0234098230948.html


想知道更多?扫描下面的二维码关注我
后台回复"技术",加入技术群

【精彩推荐】
点个赞+在看,少个 bug 👇
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74074