我什么时候应该为我的项目建立一个存储库?

时间:2011-10-08 03:56:37

标签: c++ version-control netbeans mercurial project

我一直在考虑使用Mercurial进行版本管理,并希望尝试一下。我正计划自己做一个项目来帮助我学习来自Java的C ++,并认为用它来尝试版本管理是个好主意。它可能是一个游戏或某种简单的应用程序,不确定是否使用GUI。

问题是我对版本管理知之甚少。在项目中是否是制作存储库的好时机?我应该马上做吗?我应该多久提交一次?

我将使用Netbeans进行开发,因为它似乎非常好,内置了Mercurial控件,但我应该在.hgignore中为我的项目设置什么?我假设存储库将是Netbeans创建的整个文件夹,但我应该忽略它?

奖金问题:我将使用Bitbucket进行托管/备份,我应该公开项目吗?为什么/为什么不呢?还会让它成为开源吗?我是否应该为附加许可证而烦恼?因为我不知道许可证是如何工作的。然后,我真诚地怀疑我会做任何想要复制得太厉害的事情。

4 个答案:

答案 0 :(得分:6)

关于回购:

您应该尽快使用VCS存储库。它不仅允许异地备份,还允许您跟踪更改。了解何时引入了错误。

拥有VCS,尤其是像Mercurial这样的分布式VCS,将改变您的编码方式。你不必小心不要破坏东西,因为你总是拥有可以恢复的旧版本。如果在几周或几个月之后,您认为特定的开发过程是一个坏主意,那么您可以一直回到之前的某个位置。

您通常应该每天或每次完成任务时提交。就像,你可能有一个4小时的任务“写这个课程并让它工作”。你之后提交。当你完成这一天的时候,你会承诺。不过,我建议不要在非编译状态下进行,所以只有在所有内容都存在的情况下,你才应该尝试停止这一天。

至于忽略,你应该忽略你不打算提交的东西。回购中您不想要的东西。生成的文件,临时文件,您不需要的东西。

回购中的内容是从头开始构建项目所需的100%信息(减去外部依赖项)。

许可证:

我会说在没有附加某种许可证的情况下建立公共存储库是非常粗鲁的。没有许可证,这意味着任何人甚至在未经您明确许可的情况下,甚至撤回回购(这是您公开发布的邀请)都是对您的版权的侵犯。

所以要么看看版权是如何运作的,要么选择许可证来发布你的东西,或者保持你的回购私密。

答案 1 :(得分:4)

通常,你想到它的那一刻。将您拥有的所有东西立即放入VCS中不会受到任何惩罚,谁知道,您可能希望以后能够获得超级原型版本。除非你要检查大型媒体文件(不要),我的回答是:现在。

至于提交的频率,这是个人偏好。我使用git,就我而言,每次你做出一些重大改变时都没有问题。沿途的快照越多,以后就越容易追踪错误。

你的.hgignore取决于你。您需要决定版本的内容和版本的内容。根据经验,编译期间生成的任何文件都可能不应该被签入。

此外,如果您向公众发布,请附上许可证。它无关紧要,但它让世界上所有的老板和律师都知道他们能够做什么,不能用你的代码做什么。最后,除非您认为其他人会从中受益,否则请不要向公众发布内容。互联网已经遭受信息过载的困扰。

答案 2 :(得分:0)

提前提交,经常提交。

使用像hg或git这样的分布式VCS,在你编写任何代码之前,没有理由不启动repo。如果您决定废弃项目,则可以在将其发布到您正在使用的任何托管站点之前始终删除您的回购。你提交的次数越多,就越容易磨练你以后搞砸的地方(你会)。

放入忽略文件的东西将是构建文件以及IDE定期生成的任何内容,例如用户首选项和标记缓存。您不希望将您的偏好强加给其他人,并且您不希望每次更改IDE中窗口的位置时都必须创建提交。回购中的内容应该是某人需要能够处理您的项目的最低要求。

如果您只是在做一个小项目来学习,那么我不会担心许可证或拥有私人回购。您以后可以随时添加许可证。或者,只需选择一个许可许可证并继续使用它。

答案 3 :(得分:0)

根据我对git的经验,我建议如下:

  1. 与项目一起创建存储库。
  2. 尽可能多地提交详细评论
  3. 当你想测试一个新想法时 - 创建一个分支。如果想法成功,请将代码合并到主分支。如果想法不成功,你可以放弃分支。可能这是最重要的想法。
  4. 将对象文件,可执行文件和编辑器备份文件的名称放在忽略列表中。