我将在我的最后一年项目中用C ++实现一个版本控制系统。
我想知道:
答案 0 :(得分:5)
如果你想做一些不同/创新的事情,那么我建议我们在源代码之外的其他方面寻找你的版本控制。还有其他应用程序,其中版本控制可能是有用的(例如文档的修订控制)和源代码控制已经广泛完成 - 您不太可能与其他源代码控制中尚未存在的创新相提并论。
答案 1 :(得分:4)
答案 2 :(得分:4)
忽略那些说不能做的人。在他们的开创性书籍“Unix编程环境”中,Kernighan和Pike开发(一个非常基础的)使用shell脚本,diff和sed只需几行代码。我相信你可以做类似的事情。
答案 3 :(得分:4)
#2 用户界面不错!
答案 4 :(得分:2)
第一个功能应该是:
<强>合并强>
如果您编写了完整的VCS并且合并很糟糕,则不会使用该功能。而你的VCS现在只是一个美化的备份系统。
合并也可能是最难实施的部分。
答案 5 :(得分:2)
能够在整个代码库中搜索一大块文本的实例。随着代码库变老(或者新人加入项目并且正在学习代码库),这变得非常重要。 SourceSafe有它,但其他一些没有。是的,Sourcegear Vault,我正在看你。
当然,这是SourceSafe做的少数事情之一,但它需要提及。
答案 6 :(得分:2)
站在巨人的肩膀上。如何为现有版本控制系统做出贡献,添加新功能和/或修复错误比重新发明轮子更好?
根据您喜欢的语言,您可能会找到一个用该语言编写的良好开源。
Python&gt; Mercurial,C&gt; Git,C ++&gt;单调
答案 7 :(得分:2)
看看GitHub联合创始人Tom Preston-Werner撰写的文章:The Git Parable,描述了如何根据第一原则构建类似Git的系统 。值得一读。
还要尽量避免陷入其他陷阱,例如设计文件格式和网络协议,并考虑到可扩展性,如果格式发生变化则不必破解它;要么提供版本号,要么提供功能列表。但这是更高级的事情,它假设您希望此VCS超越项目项目。
答案 8 :(得分:1)
我很佩服你的抱负,你的课程可能与我的不一样,但是你的报告往往会得到更多的分数而不是代码,所以知道你可以归档什么是很重要的,因为写报告需要2,3是编码的时间。
您可能需要尝试极其粗略地实现其他一些想法,以便在您提交之前让自己了解每个想法的难度。
Linus Torvalds可能已经在四周内开发了git的核心,但是为了让它真正可用,它需要花费更长的时间,而且他是Linus Torvalds!
答案 9 :(得分:0)
很多人怀念的是搁置更改的能力 - 即将文件作为临时提交进行检查,因此您可以定期保存工作副本(例如,每天晚上以防计算机被盗/损坏)但没有这些进度'更改显示在主要更改列表中。当你完成它们的工作后,然后检查它们以正常提交它们并删除临时数据(因为你不想;用无关的版本填充你的VCS)。
许多人未能做的另一件事是自动通知用户更改。例如。 svn你必须运行svn update才能获得团队成员所做的任何更改,这样做很自然,所以每次操作都会检索到更改(例如,保存一个更改列表,并将高度优化的数据块发送到每个结果后的客户)
尝试更好的存储二进制文件的方法,大多数SCM旨在处理文本,并且只是偶然地处理二进制文件(通常不是很好)。
在很多方面,我建议从现有的开源SCM开始,并根据您的更改进行扩展。这样,您可以免费获得基础知识的好处,让您专注于花哨的功能,但代价是学习如何开发SCM。 Subversion,git,mercurial,bazaar都是很好的参考SCM。
答案 10 :(得分:-6)
您无法创建完整版本控制系统作为最后一年的项目。而在C ++中,即使对于一个完整的团队来说,在4-6个月的时间内也几乎是不可能的。 (我认为FYP通常有4-6个月的时间表)。
您应该瞄准的是创建良好版本控制系统的子集。查看SVN开始并尝试开发它的一个子集。例如,SVN MINUS分支支持应该绰绰有余。
为什么选择C ++?尝试使用其他语言来更好地支持库,例如C#。请记住,C#应用程序发货更快:)