重命名 Git 仓库会导致哪些副作用?

7

假设我需要重命名一个已经被多个开发者下载的Git存储库。

如果我重命名这个存储库,会有什么副作用,如果有的话? 我的意思是除了开发人员必须在他们的本地存储库中执行更改以更改其远程存储库之外。

git remote set-url origin new_url

为了论证,请考虑Git服务器是私有的,并且所有开发人员都属于同一公司。
至于价值,我已经检查了关于在Git中重命名存储库的其他问题,但除了git远程更改之外,没有一个问题专门讨论副作用。 重命名Bitbucket git存储库如何影响派生存储库? 如何重命名Git存储库? 如何在GitHub上重命名存储库?

2
更改名称的影响:名称被更改。更改名称的副作用:每个使用该名称的人都必须更改它。谁使用了这个名称?URL,当然,但也包括嵌入脚本中的本地路径,如果有任何--reference等等。找到它们并更改它们,你就完成了。Git通常无法帮助您找到它们,因为它们大多数情况下在Git之外。它可能可以在--reference备用方面提供一些帮助;不过,它并没有这样做;如果您使用了--reference,则必须手动查找它们。 - torek
@torek,感谢您的评论。如果这就是所有的副作用,请将其发布为答案,我会接受它。 - Guillem Vicens
2个回答

6
正如我四天前在评论中所说,更改名称的唯一真正“副作用”是所有使用该名称的人都必须改变他们的使用方式。这不完全是副作用,因为这是主要效果:您已更改名称!
因此,更有趣的问题是:谁使用这个名称? 这里的一些答案是显而易见的:它存储在各种URL中,通常在各种“远程”(例如origin)下。
$ git config --get remote.origin.url
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/

(这个克隆版本是在 GitHub 上的公共访问版本(例如 https://github.com/torvalds/linux)之前创建的,否则我可能会使用它。) 如果 Linus Torvalds 更改了他的 Git 存储库的名称,那么我必须更改存储的 URL。但你已经自己做出了这个调用。

所以:还有哪些地方可能存储存储库的名称?我能想到的另外两个地方是:

  • 各种 shell 脚本、YAML 文件等,它们为某种原因将其存储在其中;和
  • --shared 和/或 --reference 克隆,它们在存储库内设置 Git 称为“alternates”的内容。

如果您制作了这样的克隆,请检查一下。Git 最好有一种更方便的方法来做到这一点,但基本上现有的方法是找到所有的 .git 目录,并检查其中的 objects/info/alternates。另请参阅git 克隆 --shared 和 --reference 之间的区别是什么?

shell 脚本、YAML 文件等有多种形式,没有通用的方法来找到它们,尽管明显的“grep”样式检查是显而易见的(仍可能会错过任何转换为二进制格式和/或压缩的文件)。


2

请考虑以下一些潜在的副作用。

远程引用:如果代码库有远程引用(例如origin),这些引用需要被更新以反映新的代码库名称。这包括更新代码库的克隆中的任何URL或引用。

协作者工作流程:如果有协作者或团队成员与代码库一起工作,他们需要相应地更新他们的本地克隆和远程引用。这确保他们的本地代码库正确连接到重命名后的代码库。

CI/CD流水线:如果你的代码库使用了CI/CD流水线或其他自动化工作流程,可能需要更新以反映新的代码库名称。这包括引用代码库名称或URL的任何脚本或配置。

链接和依赖项:如果代码库被其他系统,如文档、问题跟踪器或依赖管理器所链接或引用,这些引用需要被更新以反映新的代码库名称。未能更新这些引用可能导致链接损坏或依赖项错误。

Git历史记录和引用:重命名一个Git代码库不会修改现有的提交历史记录或引用。然而,当用户与重命名后的代码库交互时,他们需要知道新名称以确保使用正确的代码库。

URL和Webhooks:如果存储库与外部服务集成,如Webhooks、问题跟踪器或项目管理工具,则任何引用存储库的URL或配置都需要更新以反映新名称。未能更新这些配置可能导致集成功能中断或数据错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接