Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
Version control 我应该如何使用Mercurial作为单独的开发人员?_Version Control_Mercurial - Fatal编程技术网

Version control 我应该如何使用Mercurial作为单独的开发人员?

Version control 我应该如何使用Mercurial作为单独的开发人员?,version-control,mercurial,Version Control,Mercurial,我决定将Mercurial用于一个小型的个人项目 我读到的大部分帮助都是关于在多个用户之间合并更改的。既然我是独身,那就不会发生了 我应该有多个存储库吗?我的开发计算机已经每晚备份到我的Windows Home Server,因此,在其他地方建立第二个存储库仅仅用于备份似乎没有什么价值 我应该每天都做分枝吗?或者仅仅是发布?或者什么时候 一般来说,对于使用Mercurial的独立开发人员,您建议采取什么做法?我不知道为什么您需要多个存储库,因为您已经在备份存储库所在的计算机 如果你想研究一个特性

我决定将Mercurial用于一个小型的个人项目

我读到的大部分帮助都是关于在多个用户之间合并更改的。既然我是独身,那就不会发生了

我应该有多个存储库吗?我的开发计算机已经每晚备份到我的Windows Home Server,因此,在其他地方建立第二个存储库仅仅用于备份似乎没有什么价值

我应该每天都做分枝吗?或者仅仅是发布?或者什么时候


一般来说,对于使用Mercurial的独立开发人员,您建议采取什么做法?

我不知道为什么您需要多个存储库,因为您已经在备份存储库所在的计算机

如果你想研究一个特性,而不想在主代码分支中混乱,那么你可能会自己进行分支


但也许你会从我之前提出的问题中提取一些东西。

这些通常与你在任何软件项目中的工作相同。简单地拥有或没有版本控制是不可讨论的;)

通常,您只需在功能就绪时提交。因为你有一个备份,你不需要每天都提交,只是为了安全地保存你的工作

对于分支:在我的单独项目中,我主要使用它来尝试想法,例如,当我对同一问题有另一个解决方案时。为此,我也喜欢Git的隐藏命令


但是,我有多个存储库。我有一个具有shell访问权限的主机,可以推送到它。因此,无论我在哪里工作,也不管我有什么工作站(在工作中:当我有时间编码时,在家里的桌面上,当我在父母家时,在笔记本电脑上),我都可以与该回购同步。

我认为这取决于你是否同时维护现有应用程序和添加功能(或修复大的bug)

通过这种方式,您可以修复主分支中的错误,同时在其自己的分支中创建新功能

我在我的应用程序中就是这样做的,但是使用的是本地版本的CVS。此外,如果您的团队中添加了一名新的开发人员,您就可以开始了

我同意这是与备份不同的问题

祝你好运,
Randy Stegbauer

SCM是编辑器的一种“智能”撤消缓冲区扩展。你可以回到过去,你可能已经解决了一个问题,但是删除了它,因为它已经被重构了,但是你需要再次解决,等等。设置一个视觉差异,它会告诉你自上次提交以来你做了什么更改,或者在过去的两天里,如果我不喜欢我的旧解决方案,我会不断地检查我的代码并对其进行更改

分支是在流上工作的:当你开始朝一个方向走,但它需要更多的思考,同时你想做其他事情,那么它可以帮助你


请注意,DVCSs将存储库作为单个单元处理。您可以一个文件一个文件地提交(使用过滤器),但它们会针对整个存储库存储更改。在单个文件更改更为频繁的情况下,cvs(svn)用户会感到困惑。

拥有多个克隆的另一个很好的理由(至少如果您有多台计算机)是,您很容易看到是否在代码中引入了任何依赖项。(即,您的代码是否会在另一台机器上运行,而这台机器可能没有您的主工作站拥有的所有开发包)

从您的问题的措辞来看,我认为您可能对版本控制术语有一些误解

每个项目都应该有一个存储库。您可以将存储库简单地看作文件系统上的一个文件夹。在特定文件夹中初始化Mercurial存储库时,该文件夹及其任何子文件夹中的每个文件都可以添加到存储库中进行版本控制。您不必添加所有内容,但如果您愿意,任何内容都可以添加

如果愿意,您可以将此本地存储库推送到远程存储库,作为备份形式或与他人共享代码的方法。但是,如果只是一个个人项目,这很可能是不必要的,特别是因为您已经有了备份解决方案

分支通常用于分隔项目的不同“版本”。正如一些人所提到的,这对于单独开发人员尝试重构代码的方法或测试解决特定问题的不同方法非常有用。如果它不起作用,你不必担心弄清楚要滚回哪里,你只需点燃树枝。如果成功了,您可以将分支合并回主存储库(“主干”)并继续

如果您确实要“发布”代码,并且需要继续维护旧版本,那么您还需要使用分支。例如,假设您发布了1.0版,一些人开始使用它。在他们使用它的同时,您可以私下继续开发下一个版本,可能是1.1,在主干存储库中添加功能。现在,有人在发布的1.0代码中发现了一个bug,您需要修复它,但您不能只在主干中修复它,然后将该代码提供给他们,因为它不处于要发布的状态。这就是1.0分支派上用场的地方。您可以修复1.0分支中的错误,并将错误修复更改合并到主干中,以便在那里也修复错误。然后,您可以使用错误修复程序重新打包1.0并将其发布给用户,而无需考虑如何使主干进入可以向公众发布的状态

除此之外,使用Mercurial solo通常不会涉及很多花哨的工作。做一些工作,当你完成一个特性时,将它提交给你自己一个“检查点”,如果需要的话,你可以在将来返回。你不需要每次保存或诸如此类的东西时都做出承诺,只要在你觉得自己添加了一些东西时就去做
(See where I left off)
# hg status 

(See what I was doing with foo)
# hg diff -r tip src/foo/foo.c

(Finish one module, commit it)
# hg commit src/foo/foo.c

(Push changes)
# hg push