使用像git这样的分布式版本控制系统,并使用您的共享文件夹计算机来存储参考资料库。原因如下:
每个克隆都是备份
如果服务器硬盘驱动器崩溃,则每个人都有一个副本,可以随时将其部署在新的驱动器或服务器上。由于您的公司并不认真对待版本控制,因此我想与备份几乎相同。
共同参考
具有带有master分支的主存储库可以知道最后一个单词的版本。这解决了“您已经针对Franck的版本测试了您的更改,但是您也拥有John的版本吗?并且如何合并它们?”。
提供更舒适
客户今天要购买Alpha版本吗?好了,您可以测试master是否足够稳定并发货。如果不是这样,而您又没有时间修复它,那么请及时返回以获取较旧但更稳定的版本。如果您只有最新版本,则无法这样做。
回到过去,纠正错误
您的手动合并有几天后才看到的问题,但是您已经覆盖了共享文件夹的内容?没有VSC,您将没有历史记录,因此您无法轻松返回到可以检查并纠正错误的地方。代码不像图片,而是电影:它随时间变化。您可以从电影中提取图片。您无法从图片中提取电影。
更轻松地查找错误
出现了一个错误,但是您在引入它时并没有真正注意到它,因此在代码“热”时您无法修复它。现在您真的不知道是由哪个更改引起的,因此它可能来自代码中的几个不同位置。仅需查找几个地方,就需要几个小时。使用git,您可能已经开发了一个测试来说明该错误是否在特定版本上发生,并用于git bissect
查找引入该错误的确切提交。现在,您无需查找数千行代码,而是知道它位于10行更改中,并且可以将测试保留在测试套件中,以确保不会再次引入该错误。
每个开发人员都应对自己的工作负责
如果您是团队负责人,并且没有VCS,那么您很可能必须要做肮脏的工作,即合并。如果您自己执行此操作,则可能不了解所有更改的所有内容,并且可能会引入错误。相反,如果每次合并代码时,您总是要求编写代码的人与您一起收集,那么那时他们将不再使用这些代码来生成新代码。
使用VCS,在简单的工作流程中,开发人员只需照顾他/她的工作,以及一个外部更改源:master分支。在master分支中可能有1或100个人在提交,这是相同的。为了能够推动他/她的更改,他/她将不得不使它们适应他人所做的最新更改。推送代码似乎需要更长的时间,但是那是因为您还要进行合并,这反而会花费时间。
区别在于合并是由进行更改的人员完成的,该人员最了解该代码,因为他/她已经编写了该代码。
谁写的代码?
这里有那个错误,但是谁写了那行特定的代码?很难记住,尤其是如果该项目持续数月之久。git blame
会告诉您写该行的人和时间,因此您可以询问合适的人,并且没有“我不记得写过”的内容。
这个项目越来越大
客户想要更多功能,而您的团队太小,您将需要其他开发人员。没有VSC,如何管理增加的合并复杂性?
紧急变化
该客户致电并要求为产品进行重要的错误修复,但是您当前正在开发一项新功能。只是git stash
将您的更改放在一边,或者将其提交到新的分支中并推送更改,您就可以开始进行紧急修复,而不必担心丢失正在执行的工作。
10分钟前成功了
您正在本地进行一些更改,而十分钟前就已停止工作。如果没有VCS,您要么盯着代码,要么充其量只能查看参考版本,然后进行比较以查看所做的更改。哦,等等,自从我开始工作以来,引用已更改,因此我无法再进行比较。而且我不认为保留我所做更改的原始代码。
使用VCS,您可以立即执行类似的操作git diff
,并且将更改与所基于代码的正确版本进行比较。
我必须保留调试日志
所以你是个坏人,不使用日志记录吗?您必须printf
在所有代码库中添加s,直到找到该讨厌的bug的所有部分为止?现在,您找到了一个,修复它,但是想要保留精心制作的调试代码来修复其余问题。
如果没有VCS,您要么需要复制文件,清除调试代码(这可能会增加一些编辑错误),然后推送它,然后放回备份的文件。哦,但是似乎仍然有一些调试代码。
使用Git,你只要git add --patch
选择你想要把你提交的代码的几行,并可以提交仅这一点。然后,您可以继续工作,并保留调试代码。您无需触摸代码,因此没有复制/粘贴错误。
大泥球
没有VCS,人们会站在一边,给您带来很多变化,有时是无关紧要的。当要检查的代码太多时,很难找到错误。
VCS将允许您进行小的,增量的更改,并提供一个更改日志。更改日志是必不可少的:人一定要告诉那里,为什么他们正在做的改变,而不是什么是变化(什么问题是alredy通过代码变化本身回答)。这意味着,例如,当您检查某个新功能的某些代码时,您将不必阅读许多无关的混合更改,例如无关的错误修正。这有助于专注于您关心的代码。
如果我一一给您100个土豆,但一个烂了,您会立即发现它。现在,如果我在您面前丢下100个土豆,请您找到烂的土豆,那可就不一样了。
缩进
希望您有良好的编码样式策略,否则如果手动合并,缩进更改会使您发疯。当然,您可以忽略更改中的空格(但在缩进计数中不能使用语言,例如Python)。但是,这样一来,您将很难看懂奇怪的代码。
你是项目负责人
如果您是领导者,这意味着如果事情不起作用,您将受到责备。如果您因为老板仍然不了解使用正确的工具来完成正确的工作是值得的而无法适应这种情况,那么至少我会拒绝成为可预见的失败的领导者。