我一直在研究使用Mercurial进行版本管理,并想尝试一下。我计划自己做一个项目来帮助我学习来自Java的c++,并认为尝试使用它进行版本管理是个好主意。它可能是一个游戏或某种简单的应用程序,不确定是否有GUI。
问题是我不太懂版本管理。在项目中什么时候是创建存储库的好时机?我应该马上做吗?我应该多久提交一次?
我将使用Netbeans为我的发展,因为它似乎是相当不错,也有汞控制内置,但我应该在。hgignore为我的项目设置什么?我假设存储库将是整个文件夹Netbeans创建,但我应该让它忽略什么?
附加问题:我将使用Bitbucket进行托管/备份,我应该将项目公开吗?为什么/为什么不?这也会使它成为开源软件吗?我需要麻烦附上许可证吗?因为我不知道许可证是怎么运作的。不过,我也真心怀疑自己是否会做出任何人都非常想要复制的东西。
On repos:
您应该尽快使用VCS存储库。它不仅允许异地备份,还允许您跟踪更改。查找bug何时被引入。
拥有一个VCS,特别是像Mercurial这样的分布式VCS,将会改变你的编码方式。你不必小心不要破坏东西,因为你总是有旧的版本,你可以恢复到。如果在几周或几个月后,你决定某个特定的开发过程是个坏主意,你可以一路倒回去,回到之前的某个点。
一般来说,你应该每天都提交,或者每次完成一项任务都提交。比如,你可能有一个4小时的任务"编写这个类并使其运行"。在那之后你才会做出承诺。当你完成了一天的工作,你就会做出承诺。我不建议在非编译状态下提交,所以你应该在一切都还在构建的时候停止。至于忽略,你应该忽略你不打算做的事情。你不想在回购中看到的东西。生成的文件,临时文件,你不需要的东西。
repo中应该包含100%从头构建项目所需的信息(减去外部依赖项)。
在许可:
我想说,在没有附加某种许可的情况下建立一个公共存储库是非常粗鲁的。如果没有许可,这意味着任何人在没有您的直接、明确的许可的情况下,甚至从repo中提取(这是您通过将其公开而邀请的)都是对您的版权的侵犯。
所以要么看看版权是如何运作的,选择一个许可证来发布你的东西,要么把你的repos保密。
通常是你想到的那一刻。把你所有的东西都放到VCS中没有什么不好的,谁知道呢,你以后可能会想要那个超级棒的原型版本。除非你要检入大型媒体文件(不要),否则我的回答是:现在就检入。
至于多久提交一次,那是个人的喜好。我使用git,就我所知,每次对某个单元进行重大更改时都签入是没有问题的。在此过程中,您拥有的快照越多,以后就越容易跟踪bug。你的。hgignore由你决定。你需要决定什么版本,什么不版本。根据经验,编译过程中生成的任何文件都不应该检入。
另外,如果您向公众发布它,请附上许可证。它是什么并不重要,但是当世界上所有的老板和律师知道他们能用你的代码做什么和不能做什么时,他们会很高兴。最后,请不要向公众发布某些东西,除非你认为其他人会从中受益。
尽早提交,并经常提交。
对于像hg或git这样的分布式VCS,在你写任何代码之前没有理由不启动一个repo。如果你决定放弃你的项目,你可以在发布到你正在使用的任何托管网站之前删除你的repo。你做得越多,你就越容易发现你后来搞砸了什么(你会)。
放在忽略文件中的东西将是构建文件和IDE定期生成的任何东西,如用户首选项和标记缓存。您不希望将您的首选项强加给其他人,也不希望每次更改IDE中窗口的位置时都必须创建一个提交。在repo中的内容应该是某人能够在您的项目中工作所需的最小值。
如果你只是做一个小项目来学习,那么我不会担心许可证或私人回购。您可以稍后再添加license。或者,选择一个宽松的许可证,然后继续使用它。
根据我使用git
的经验,我建议如下:
- 与项目一起创建存储库
- 尽可能多地提交,并附上详细的注释
- 当你想测试一个新想法-创建一个分支。如果这个想法是成功的,合并你的代码到主分支。如果这个想法不成功,你可以直接放弃这个分支。这可能是最重要的想法。
- 将目标文件、可执行文件和编辑器备份文件的名称放在忽略列表中。