我将根据我的个人经验为您提供一些提示。
我的队友之一,尽管经验丰富,但并不真正了解SVN。自然,在他的心理图上描绘了SVN海洋的空白区域使他采取了相当奇怪的用法。
例如,他宣布了一项策略“每个开发人员每天1 SVN提交”,因为否则“服务器将很快用尽磁盘空间”。当我向他解释SVN提交是增量而不是完整副本时,他对此表示怀疑,即使是今天,我也不确定他是否理解这意味着什么。
即使磁盘空间是一个问题,您也总是可以一次提交很多文件,所以我认为他的建议是错误的解决方案。此外,由于SVN不会存储二进制文件的增量,因此通过检入较大的二进制文件可能会浪费大量空间。每天进行一次签入也是不好的,因为它会迫使您提交不属于您的更改,例如,如果您每天修复多个错误。
我们公司采用的解决方案是有一个过滤器拒绝任何包含二进制文件的提交。我们可以通过在签到注释中使用特殊关键字来强制提交(我们必须向SVN证明我们知道自己在做什么)。一年或两年一次,项目经理会存档旧分支并将其从存储库中删除。通过这种策略,我们不会遇到我所知道的空间问题(我们的存储库支持几个不同的项目,并且有超过100000个修订版)。
总结一下,您可以告诉他您同意他磁盘空间是一个重要问题,但另一方面,请指出
- 与功能相关的签到而不是每天一次的整体签到的重要性;
- 通过每天检入一个大的二进制文件,无论如何仍可以填充磁盘这一事实。
然后,您可能建议您召开一次会议(可能还会与其他开发人员或系统管理员开会),讨论控制磁盘空间使用情况的策略(例如,二进制文件筛选器,定期备份和清理未使用的旧分支)。
关于是否在SVN中包含Eclipse .project配置,我们也有激烈的争论。我的队友坚持认为我们应该这样做,尽管这造成了许多毫无意义的冲突。我反对在SVN中保留单个开发人员配置文件。最终,事实证明,我的队友在每次提交后都有重新检出整个源代码树的做法,以确保“提交到存储库中的代码有效”。这就是他如此坚持将项目配置保留在SVN中的原因-因此很容易重新导入项目。当我解释说commit会将工作副本同步到远程逐个字节地进行,从而不必进行重新检出时,我的队友再次表示怀疑,最终将整个问题视为微不足道。
我认为,我们的团队通过解决项目配置文件中的SVN冲突而浪费时间,该项目配置文件仅包含开发人员特定的设置,根本不需要与SCM共享。所有这些都是混乱的,因为有人围绕错误的假设量身定制了该过程。
您是否使用构建服务器?我们有一个构建服务器,它可以检出整个项目,并每晚进行编译。第二天早上,测试人员已经准备好该产品的安装程序(如果主版本正确运行),而我们(开发人员)则拥有包含所有警告(如果有错误,还包括错误)的版本报告。当然,您需要为构建服务器设置标准配置文件并将其检入。每个开发人员随后都可以将其与项目的其余部分一起检出,但是不允许他们检入任何本地更改。
在这种情况下,您可以解决他需要能够检出完整项目并随时构建它的需求。您还可以避免花费时间来合并最初不应该检查的更改,因为它们不是产品的一部分:产品是主版本,必须保持清洁。如果有人破坏了主版本(例如,签入自己的.project文件),则可以还原更改或强制开发人员解决问题。
也许如果他再次提出问题,您可以再次建议召开一次会议(可能与其他开发人员开会),然后共同寻找共同的策略。
我该如何说服一个以自己为资深的队友来更好地理解SVN基础?
我认为最好的策略是避免将冲突带入个人层面,而是讨论眼前的问题和可能的解决方案。如果您觉得他正在寻找个人对抗,那么这里有一些建议(同样根据个人经验):
- 您的团队动力如何?您的其他同事在此队友中也有类似的经历吗?有很多细微但不太明显的暗示,团队可以给予其成员劝阻某些行为(小笑话或观察)并鼓励建设性对抗(提议开会,或在喝咖啡休息时间非正式地提出话题) )。有时,一支优秀的团队可以迅速隔离出令人困扰的因素,并使事情恢复正常。
- 您的人员管理水平如何?我们公司发生了一起一起冲突案件,所有人员必须介入以清除情况。这不是很好,但有时工作环境恶化得很厉害,以至于无法单独改善。我希望这不是您的情况(我还没有得到这么远的印象),但是总是很高兴知道您是否拥有良好的人事管理或是否必须自行解决冲突。
我为什么要写这个?您说您想“说服一个以自己为高级的队友,以更好地理解SVN基础”。在我看来,冲突可能变得太个人化了。一些心理学家坚持认为,我们70%的交流都是在情感层面上进行的,如果这种交流方式不起作用,那么人们就会因为忙于处理情感而停止谈论事实。
因此,除了解释您的观点外,您还可以尝试做一些事情来改善沟通。邀请一起喝咖啡或共进午餐,就与工作无关的话题进行简短交谈等,可以改善沟通,并使同事的注意力重新回到您希望他理解的重要事实上。如果他接受这种交流,那么也许到目前为止您所发生的冲突与您彼此不了解并且存在一些小误会有关,但是他可能愿意建立建设性的合作。如果他拒绝,那么他的身边可能会有更深的敌意。
在这种情况下,我认为您应该等到角色变得清晰为止。如果您的队友在官方上没有比您更高的级别,那么您改善自己的努力就不会惹恼他。随着时间的流逝,如果他不断尝试表明自己知道更多,他将不得不接受它或自欺欺人。如果他确实有较高的职位,您应该找到一种让他明白这不在讨论中的方法:您的观察旨在提高生产力而不是损害他的职位,这一点必须100%明确。明确角色后,如果他仍然不能接受建设性的建议或批评,那么他确实必须在自尊心或类似问题上有问题。
因此,如果上述所有策略都失败了,而您又感到(非常)沮丧,那么恐怕唯一合理的事情就是收拾行装,寻找更好的地方。三年前,我取得了这一经验,并找到了一家令我非常满意的更好的公司。也许这不是您的情况(我当然希望不是),但也请尝试理解这一点。
只是我的2美分。