GitHub Copilot应用中的堆叠会话和拉取请求
本文介绍了作者如何使用GitHub Copilot应用的堆叠会话和拉取请求功能,成功现代化了一个古老的前端项目。通过分阶段处理依赖升级、样式重构和组件替换,避免了范围蔓延,实现了高效的代码迭代。
近期,GitHub博客上的一篇文章详细介绍了如何利用GitHub Copilot应用中的堆叠会话和堆叠拉取请求功能,将一个古老的前端代码库现代化。作者分享了自己从2014年开始维护的一个个人仪表盘应用,该应用长期使用React 15(2016年发布)、Less CSS预处理器和旧版react-bootstrap,依赖库早已过时,导致维护困难。在尝试手动更新失败后,作者决定借助AI工具进行重构。
第一步,作者尝试在GitHub Copilot的Plan模式下提出一次性计划,希望全面现代化前端,包括改用Tailwind或纯CSS、移除Less、优化可访问性和响应式设计,并升级依赖。然而,由于未曾意识到之前曾尝试过部分更新并保留了一个旧dev分支,初始计划并未成功。
作者意识到问题后,将工作切换到dev分支,而不是从主分支重新开始。Copilot自动创建了新会话,关闭了最初的拉取请求,并将样式决策移植到对dev分支的更改中。这一步展示了堆叠会话的优势:可以轻松切换上下文,而不会丢失进展。
在测试过程中,作者发现了react-bootstrap中的遗留警告(如findDOMNode和componentWillReceiveProps),这些来自旧版依赖。于是再次使用Plan模式讨论是否升级或替换react-bootstrap,最终决定完全移除该库,改用现代替代品。
为了避免范围蔓延,作者没有将所有更改合并到一个巨型拉取请求中,而是利用堆叠会话功能:先为当前工作创建一个拉取请求,然后基于该分支启动一个新会话,专门处理react-bootstrap的替换工作。Copilot自动生成了堆叠的拉取请求链,每个请求基于前一个的分支,最终合并到dev分支。
文章最后展示了堆叠会话的界面截图:最上层是仓库,接着是“前端现代化”会话,其下嵌套了第一个未成功的拉取请求(红色图标),然后是成功的工作拉取请求,最下层是进行中的react-bootstrap替换的草稿拉取请求。作者感叹,软件开发从未如此顺畅,堆叠会话和拉取请求使得代码重构变得轻松可控。