2010-06-12 67 views
1

伊夫在过去的几年中取得了从该网站这么多的知识/洞察的文件列表,现在我其实希望能得到一些启示。SVN进口,不修改修订或修改交易

该场景如下: 您具有repo(trunk,branches,tags)的一般结构,但在布局中添加了另一个名为'db_revs'的目录。现在,在预提交中,将特定数据库(具体细节无关)转储到临时文件中,例如/tmp/REV.sql(REV是回购的HEAD修订版本号或事务)。

K一切都很好,您可以将该临时文件导入到/db_revs/REV.sql中的回购库现在很明显,导入,即使是在提交过程中发生的事情,也会增加回购修订版。所以当你在某个时候提交了一个提交,在trunk中说'test.php'并且它在修订版本159中完成时,那么预提交按照它的原样运行,并且数据库转储被导入,但是随后你坐在一棵树中repo浏览器,其中'trunk'在修订版本159处,并且具有导入的转储的'db_revs'在158处(我已经制作了它,使得文件名与修订版即:159.sql匹配,但是那个文件在修订版158)。 HEAD修订版本之前在此例如提交了157

NB如果你在做一个进口前提交,你需要添加一些逻辑不执行导入,说首先检查了临时文件的存在,否则它会导致,嗯,堆栈溢出,你的电脑会很快爬到静止的地方

所以我想知道是否有可能导致不提交其更改。我意识到我可能会吠叫错误的树开始,所以我有另一个想法做到这一点,这使我想到了我的问题的第二部分,是否有可能修改事务即将提交的文件列表回购。我知道这可以做到一个厕所,但这不会帮助作为一个厕所是一个检查出的副本说干线,所以我不知道如何将文件添加到“干线以上的db_revs”文件夹?

任何帮助是极大的赞赏

干杯 沃恩

回答

0

一般的答案是“你不允许预期间修改任何版本信息*交易的阶段”。这包括更改文件或目录,或更改文件或目录上的属性。版本属性(如svn:log或svn:author)没有版本控制,因此是公平的游戏。

该问题已经在深度其他地方进行了讨论,但它归结为这样:如果你在飞行中改变交易

,目前还没有机制,为SVN服务器告诉事物都有客户端改变。因为没有机制/没有更新,你的客户认为他是跟上时代的反对回购的时候,其实他不是。

您也许能触发进口脱身/在post-commit钩子提交;那时服务器已经创建了修订版,并且任何更改都被正确地归因于更高版本。我不知道这是否被支持。