version-control - 教程的版本控制设置

标签 version-control workflow

我正在尝试为与编程相关的教程设置版本控制。事实证明这是有问题的,因为有两种不同的历史:

教程中有正在构建的项目的历史,它可用于每一章,并且是读者将看到的。如果我从不打算再次更改教程中已经编写的章节,我可以将每个章节作为标签存储在项目的历史记录中。

然后还有教程本身的历史(不仅是文本,还有我在项目的假装历史上的工作)。如果我在第 1 章中发现需要返回并修复的错误,则在末尾添加新提交不起作用,因为我想更改项目在该阶段“出现”的方式,即在项目历史记录中插入提交并将章节标签向前移动。

到目前为止,我已经考虑了一些可能性 - 使用 git 分支,其中每一章都是一个分支,每当我进行更改时,它都会重新定位到前一章的前面,一个我插入补丁的可变补丁队列,或者构建教程围绕一组我可以放入子存储库的模块。

我想我会问是否有人有这种事情的经验以及哪些解决方案有效而没有。

最佳答案

与其因为早期章节的后期修复而重写所有项目的历史,我宁愿将每个章节隔离在自己的分支中,让每个 HEAD代表每一章的当前状态。
组装所有教程更多的是一个发布管理问题(通过从 Git Repo 中提取相关信息来部署您的教程)。

然后,您可以开发您的教程以实现类似于 git immersion 的内容。 .

(注意:如果这更像是一本电子书,那么 git-scribe 会是更有趣的版本化方式。)

OP rusky在评论中添加:

I'm trying to version the sample code for the chapters, where each chapter's code is based on the previous chapter's code



这意味着您添加的任何错误修复都需要报告给代表其他章节的其他分支,在这种情况下,请参阅:
  • In Git, how do you apply a commit of bug fix to the other newer branches? (避免 cherry-pick ,这通常是个坏主意)
  • using a topic branch
  • rebase --onto solution
  • 关于version-control - 教程的版本控制设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5924302/

    相关文章:

    version-control - 如何跟踪图标字体的变化?

    Git/Bonobo - 将本地存储库添加到远程

    javascript - 通过重新加载页面或重新加载脚本/外部资源来修复Web应用程序错误

    c# - WCF 工作流服务的输入参数在什么时候被实例化/设置?

    azure - 是否可以在本地运行 Azure 逻辑应用

    ruby-on-rails - Git 或 SVN for Rails 应用程序?

    svn - 颠覆入门

    php - 具有开发、阶段和实时站点的 Git Web 工作流程

    kubernetes - 通过 REST 调用启动 Argo 工作流

    ios - XCode 5 中无法访问远程 Git 存储库