Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在版本控制系统中要实现哪些功能? 我将在C++中实现一个版本控制系统,用于我的最后一年项目。_C++_Version Control - Fatal编程技术网

在版本控制系统中要实现哪些功能? 我将在C++中实现一个版本控制系统,用于我的最后一年项目。

在版本控制系统中要实现哪些功能? 我将在C++中实现一个版本控制系统,用于我的最后一年项目。,c++,version-control,C++,Version Control,我想知道: 版本控制系统应该支持哪些功能 LI>在现有的实现中,您认为缺少哪些特性(以便我的版本控制系统不仅仅是重新创建车轮)? 开始时的参考(如果有) 您不能将完整版本控制系统创建为最后一年的项目。而在C++中,即使在一个完整的团队中,也几乎不可能在4-6个月的时间内完成。(我认为FYP通常有4-6个月的时间框架) 您的目标应该是创建一个好的版本控制系统的子集。首先看一看,然后尝试开发它的一个子集。e、 例如,SVN减去分支支持应该就足够了 C++?试着用其他一些对库有更好支持的语言来做,

我想知道:

  • 版本控制系统应该支持哪些功能
  • <> LI>在现有的实现中,您认为缺少哪些特性(以便我的版本控制系统不仅仅是重新创建车轮)?
  • 开始时的参考(如果有)

  • 您不能将完整版本控制系统创建为最后一年的项目。而在C++中,即使在一个完整的团队中,也几乎不可能在4-6个月的时间内完成。(我认为FYP通常有4-6个月的时间框架)

    您的目标应该是创建一个好的版本控制系统的子集。首先看一看,然后尝试开发它的一个子集。e、 例如,SVN减去分支支持应该就足够了


    <为什么> C++?试着用其他一些对库有更好支持的语言来做,例如C#。请记住,C#应用程序的发布速度更快:)

    如果您想做一些不同的/创新的事情,那么我建议您将修订控制的目标放在源代码以外的地方。还有其他一些应用程序,其中版本控制可能很有用(例如,文档的版本控制),并且源代码控制已经被广泛地完成了-您不太可能最终得到一个在其他源代码控制中还不存在的创新。

    我钦佩您的雄心壮志,您的课程可能与我的不同,但是您的报告往往比代码得到更多的分数,因此了解您可以归档的内容非常重要,因为编写报告所需的时间是编写代码所需时间的2,3倍

    你可能需要尝试实施其他一些非常粗略的想法,以便在你做出承诺之前让自己了解每一个想法的难度

    Linus Torvalds可能在四周内就开发出git的核心,但其他许多人花了更长的时间才使其真正可用,他就是Linus Torvalds

  • 版本控制系统必须支持哪些功能。
    核心功能:创建项目、签入、签出、分支、获取最新/上一个、查看历史记录、比较、回滚
  • 你认为在现有的实现中缺少什么特性(这样我的版本控制系统不仅仅是重新发明轮子)? 自动生成、代码分析、电子邮件通知、就地编辑器、基于数据库的存储
    忽视那些说这件事做不到的人。在他们的开创性著作《Unix编程环境》中,Kernighan和Pike使用shell脚本、diff和sed在几行代码中开发了一个(非常基本的)环境。我相信你也可以做类似的事情。

    很多人都忽略了一件事,那就是搁置更改的能力——即将文件签入作为临时提交,这样你就可以定期保存工作副本(例如每晚以防你的计算机被盗/损坏),但这些“正在进行”的更改不会出现在更改的主列表中。当您完成对它们的操作后,您可以将它们签入,以正常方式提交它们,并删除临时文件(因为您不想用不相关的版本填充VCS)

    许多人没有做到的另一件事是自动通知用户更改。例如,svn您必须运行svn更新以获取团队成员所做的任何更改,最好是自动进行更改,以便在每次操作中检索更改(例如,保存自之后的更改列表,并在每次结果后向客户端发送高度优化的数据块)

    尝试一种更好的存储二进制文件的方法,大多数SCM都是设计用来处理文本的,并且只能偶尔处理二进制文件(通常不是很好)


    在许多方面,我建议从现有的开源SCM开始,并通过您的更改对其进行扩展。这样,您就可以免费获得基础知识的好处,让您可以专注于花哨的功能,但代价是学习如何开发SCM。Subversion、git、mercurial、bazaar都是很好的参考SCM。

    \2很好的用户界面

    首要功能应该是:

    合并

    如果你写了一个完整的VCS,你的合并很糟糕,你就不会使用这个功能。而你的风投现在只是一个荣耀的备份系统


    合并可能也是最难实现的部分。

    在整个代码库中搜索文本块实例的能力。随着代码库变老(或者新用户加入项目并学习代码库),这一点变得非常重要。SourceSafe有,但其他一些没有。是的,Sourcegear保险库,我看着你


    诚然,这是SourceSafe为数不多的正确做法之一,但值得一提。

    站在巨人的肩膀上。对现有版本控制系统做出贡献,添加新功能和/或修复bug,比重新发明控制盘更好吗

    根据您喜欢的语言,您可能会找到使用该语言编写的好的开放源码


    Github C++的创始人Tom Preston Werner在文章中描述了如何从第一原理建立Git类系统。值得一读


    还要尽量避免落入其他陷阱,例如,在设计文件格式和网络协议时要考虑可扩展性,以便在格式发生变化时不必对其进行破解;提供版本号或功能列表。但这是一个更高级的东西,它假设你想让这个风投超越长期项目。

    为什么投票赞成关闭。。投票人一定很友善地发表了一条评论,解释为什么投票结果是“与节目无关”。我完全不同意。git是Linus Torvalds在4周内写的。。。大多数其他当代VCS可能在相同的时间内进入工作状态。当您需要时,不要自动想到过度设计的SVN