我之前发布了一个问题,远离VSS,我在其中询问了使用VSS的Delphi开发人员的最佳VCS控制.大多数开发人员似乎都使用带有TortoiseSVN的svn.我试了好几天,我觉得这是最好的选择.
但是,我仍然对svn的工作方式有些困惑,所以这里有一些我想回答的问题:
我可以使用vss使用的旧锁定方式(checkout-modify-checkin)吗?
Delphi表单有两个文件(MyForm.pas,MyForm.dfm).当我向表单添加任何控件时,两个文件都将被修改,所以我想提交"myform.pas"并让"myform.dfm"也提交它.我在这里错过了什么吗?
这同样适用于Delphi项目文件.因为这与其他文件链接,所以当我更改项目文件时应该提交所有文件.
您在TSVN中标记了哪些文件被忽略,因此TSVN不会查找像(.dcu, .exe,...)这样的文件,我可以将它从一个Pc导出到其他文件吗?
我现在必须改变我在vss风格中思考的方式,并且需要将其更改为SVN风格,但是使用vss,所有内容都在IDE中管理,这非常棒;-).
更新:
5.如果我提交Delphi表单(.pas和dfm)并发现之前已经更新了一个版本,如果在该表单和单元中添加了一些新的控件和事件,那么如何解决冲突(这需要Delphi开发人员使用svn ).
是的,您仍然可以锁定文件,但不建议这样做.您必须在可能要锁定的所有文件上设置svn:needs-lock属性,以便在签出时获取readonly标志.但同样,这不是文本文件的推荐工作流程.只需尝试修改合并工作流程!
由于您正在使用TortoiseSVN:右键单击您的父文件夹,选择"提交".在提交对话框中,您将看到需要提交的所有文件.只需检查myform.pas和myform.dfm文件即可.所有已检查的文件将一起提交,不需要(绝对不推荐!)单独提交每个文件!
见2. - 但你应该首先阅读精彩的Subversion书籍,以熟悉这个概念.您应该始终提交属于逻辑更改的所有文件.例如,如果向表单添加新控件并实现代码来处理它,那么您可能不仅仅修改了表单文件,还修改了多个文件.始终将所有这些文件一起提交,因为提交是一个逻辑实体.
您不必"导出"忽略设置.只需添加svn:ignored属性即可.如文档中所述,使用TortoiseSVN非常容易.
回复5:你应该尝试一下.为了限制冲突的可能性,主动开发人员经常提交,并且所有其他人经常从SVN更新,这是一个非常好的主意.设置电子邮件提交通知可以提供很多帮助,以便所有人都知道何时更新.但话说回来 - 您会发现删除控件及其所有事件处理程序或添加控件和一些处理程序的简单操作不会导致您需要手动解决的冲突.
编辑: DiGi的回答表明,即使用户没有,Delphi也会修改DFM.这不是真正的IMO,因为DFM时间戳的简单更改不符合DFM文件的本地修改,SVN也不会提交新版本.但是要注意不要在Delphi IDE中移动表单,因为这会改变表单的Top和/或Left属性.同样,更改页面控件的活动页面将被视为本地修改.因此,在提交之前检查所有本地修改并将所有那些仅仅是偶然的修改还原是一个好主意.
编辑2:正如onnodb在他的评论中指出的那样,似乎确实存在自动修改的表单属性,至少在Delphi 2007中(可能稍后会出现?).这将强调在提交之前检查所有本地修改的重要性.