svn import,不修改修订或修改事务中的文件列表

时间:2010-06-12 09:14:22

标签: svn list import commit

我在过去几年里从这个网站获得了很多知识/洞察力,现在我实际上希望得到一些启示。

方案如下: 您拥有repo(trunk,branches,tags)的一般结构,但是在布局中添加了另一个名为“db_revs”的目录。现在在预提交中,您将特定数据库(具体信息无关)转储到临时文件中,例如/tmp/REV.sql(REV是repo的HEAD修订号或事务)。 / p>

K一切都很好,您可以将该临时文件导入到/db_revs/REV.sql的仓库中 现在很明显,即使在提交期间发生了导入,也会增加repo的修订。因此,当你在某个时候提交一个提交在主干中说'test.php'并且它在例如修订版159完成时,那么预提交就会运行它并且数据库转储被导入然后你坐在一个树中repo-browser,其中'trunk'位于修订版159,'db_revs',其中包含导入的转储,位于158(我已经使它的文件名与修订版匹配,即:159.sql,但该文件正在修订158)。 在提交之前的HEAD修订例如是157

NB 如果你在预提交中进行导入,你需要添加一些逻辑来不执行导入,比如首先检查是否存在临时文件,否则它会导致,嗯,堆栈溢出,你的电脑将很快爬到停滞状态

所以我想知道是否有可能导入不提交更改。我意识到我可能会开始咆哮错误的树,所以我有另外一个想法,这样就把我带到了我的问题的第二部分,是否有可能修改事务即将提交的文件列表回购。我知道这可以在一个WC上完成,但是这不会有帮助,因为WC是一个检查后的副本说干线所以我不确定你将如何将文件添加到主干上方的'db_revs'文件夹中?

非常感谢任何帮助

干杯 沃恩

1 个答案:

答案 0 :(得分:0)

一般答案是“在交易的前期*阶段,您不得修改任何版本信息”。这包括更改文件或目录,或更改文件或目录上的属性。修订版属性(例如svn:log或svn:author)没有版本化,因此是公平的游戏。

这个问题已在其他地方深入讨论,但归结为:

如果您在飞行途中更改了事务,则当前没有svn服务器告知客户端事情已更改的机制。因为没有机制/没有更新,你的客户认为他是最新的反对回购,而事实上他不是。

您可能能够在提交后挂钩中触发导入/提交;到那时服务器已创建修订版,任何更改都适当地归因于更高版本。我不知道这是否得到支持。