保留svn中文件夹之间的修订历史记录

时间:2014-04-20 20:49:03

标签: svn

我在一个简单的项目中使用svn进行版本控制。这是一个专业 emacs的模式,因此只有一个文件。

我想要一种方法来维护开发和发布给用户的代码的修订历史记录,所有这些都是从同一个svn存储库完成的。我的目标之一是用户可以查看的一致URL,并且用户始终能够运行svn update以获得最新的“版本”,尽管版本非常非正式。

我目前在“devel”文件夹中进行开发,提交更改 根据需要发展。当准备好发布更改时,我会复制 mymode.el从devel到“trunk”(可能是一个糟糕的名称选择 - 这是用户检出的文件夹)用新的更改覆盖工作副本,然后提交到trunk。

我很确定这会保留trunk中的修订历史记录, 但这种方法似乎有点像kludgey,我觉得我没有使用svn 它的意图。

是否有更好的方法可以将更改从devel更改为trunk, 或者组织我的项目以获得更好的方法?

2 个答案:

答案 0 :(得分:0)

如果要标记好的版本,请使用标记。它更简单,更清洁。你遇到的问题是,如果我请求中继历史记录,Subversion将直接进入主干。你不会在devel分支上看到任何有趣的事情。

我更喜欢在主干上完成所有工作,并且只在必要时才进行分支。这通常意味着在发布之前,一些开发人员正在处理发布,有些正在进行未来的工作。使用标记标记您的版本。

通过这种方式,您可以获得完整的历史记录,并且仍然能够完成您的好发布。

如果您正在处理需要一段时间的功能,并且您担心自己会破坏主干,请创建功能分支,然后将该功能合并到主干中。

答案 1 :(得分:0)

你现在的风格很丑陋:

  • 任何SCM的任务之一就是轻松重建整个代码演变,但在你的情况下,如果你(我理解你是否正确?)只是将多个修订文件中的修改从WC改为WC - 你失去了关系在trunk的状态和devel-branch的状态之间:trunk工作作为没有已知父级的标签集(尝试回答问题“我从哪个分支修订版创建了$ trunk中的修订版” - 你将失败)

工作流程,习惯和口味可能不同。无论如何,始终更喜欢“每个任务分支”样式(并且即使对于单个提交更改也创建分支)并且仅在主干中使用合并集。为了您的目标“为存储库中不同版本的代码提供永久URL”(再次,它是个人选择)更喜欢使用“浮动”外部作为已发布的U​​RL(随时更改PEG修订版)在定义中)。即它可以是存储库根目录中的目录类型外部定义(“Release”,fe),映射到/ trunk的某些修订版(对于仅用于主干的开发或用于几乎任何其他的“每个任务的分支”相同)工作流程 - 仅链接节点策略可能更改)。

您的用户将始终获得REPOSTORY/RELEASE,但可以在开发过程中使用/ trunk @ 1,/ trunk @ 10,/ trunk @ 100,您只能使用日志查看发布历史记录( “release”意味着更改外部定义,因此 - 特殊提交)