Tag: mercurial

有没有办法在Mercurial中删除单个文件的历史logging?

我想我已经知道了这个答案,但是我想我会问: 我们有一个文件被添加到一个Mercurial存储库中,里面有敏感信息。 有没有办法删除该文件及其更改历史logging,而不删除整个回购?

如何正确安装dulwich来获得hg-git在Windows上的工作?

我试图在Windows上使用hg-git Mercurial扩展(Windows 7 64位,具体)。 我安装了Mercurial和Git。 我有Python 2.5(32位)安装。 我按照http://hg-git.github.com/上的说明安装扩展。 最初的easy_install失败了,因为无法在没有Visual Studio 2003的情况下编译dulwich。 我手动安装dulwich: git clone git://git.samba.org/jelmer/dulwich.git cd德威 c:\ Python25 \ python setup.py –pure install 现在,当我运行easy_install hg-git时,它成功了(因为dulwich依赖性得到满足)。 在我的C:\用户\用户名\ Mercurial.ini,我有: [extensions] hgext.bookmarks = hggit = 当我在命令提示符下键入'hg'时,我看到:“***未能导入扩展名hggit:没有名为hggit的模块” 看看我的c:\ Python25文件夹,我看到的唯一参考hggit是Lib\site-packages\hg_git-0.2.1-py2.5.egg 。 这应该是提取的地方,或者它应该工作吗? 由于失败了,我尝试了gg-git页面的“更多参与”指令,提示克隆git://github.com/schacon/hg-git.git并在我的Mercurialconfiguration中引用该path。 我克隆了回购,并更改我的扩展文件,如下所示: [extensions] hgext.bookmarks = hggit = c:\code\hg-git\hggit 现在当我运行hg时,我看到:***无法从c:\ code \ hg-git \ hggit中导入扩展名hggit:没有名为dulwich.errors的模块。 好的,所以这个告诉我现在find了hggit,因为我可以在hg-git \ hggit \ […]

什么使DVCS合并变得容易?

我在软件Joel上读到: 使用分布式版本控制,分布式部分实际上不是最有趣的部分。 有趣的部分是这些系统根据变化而不是版本来思考。 和HgInit : 当我们需要合并的时候,Subversion会试着去查看这两个版本,我的修改过的代码和你修改过的代码,然后试图猜测如何把它们合并成一个大的邪恶混乱。 它通常会失败,产生页面和页面的“合并冲突”,这并不是真正的冲突,只是Subversion未能弄清楚我们做了什么的地方。 相比之下,当我们在Mercurial单独工作时,Mercurial正在忙于保持一系列的变化。 所以,当我们想要将我们的代码合并在一起时,Mercurial实际上拥有更多的信息:它知道我们每个人都改变了什么,可以重新应用这些改变,而不仅仅是看最后的产品,并试图猜测如何把它一起。 通过查看SVN的存储库文件夹,我有一种印象,Subversion将每个修订版保持为变更集 。 而据我所知,Hg正在使用变更集和快照,而Git纯粹是使用快照来存储数据。 如果我的假设是正确的,那么肯定还有其他方法可以使DVCS中的合并变得容易。 那些是什么? *更新: 我对技术视angular更感兴趣,但非技术视angular的答案是可以接受的 更正: Git的概念模型完全基于快照。 快照可以作为其他快照的差异存储,差异仅仅是为了优化存储。 – RafałDowgird的评论 从非技术angular度来看: 这仅仅是文化上的问题:如果合并困难,DVCS根本无法工作,所以DVCS开发者投入大量的时间和精力来使合并变得容易。 CVCS用户OTOH被用于糟糕的合并,所以开发人员没有动力使其工作。 (为什么当你的用户给你同样好的东西给别人一些废话时,让事情变好?) … 回顾一下:DVCS的整个目标是拥有许多分散的存储库,并不断地将变化合并到一起。 如果没有合并,DVCS根本就没用。 然而,CVCS仍然可以在糟糕的合并下生存下来,特别是如果供应商能够限制用户避免分支。 – JörgW Mittag的回答 从技术angular度来看: 录制真正的历史DAG确实有帮助! 我认为主要的区别在于CVCS并不总是把一个合并作为一个变更集与几个父母一起logging,丢失了一些信息。 – tonfa的评论 因为合并跟踪 ,以及每个修订版都知道其父母的更基本的事实。 当每次修改(每个提交),包括合并提交,都知道它的父项(对于合并提交,意味着拥有/记住多个父项,即合并跟踪),可以重build修订版本的图(DAG = Direct Acyclic Graph)历史。 如果你知道修订图,你可以find你想要合并的提交的共同祖先。 当你的DVCS知道如何find共同的祖先时 ,你不需要提供它作为参数,例如在CVS中。 。 请注意,可能有两个(或更多)提交的不止一个共同的祖先。 Git利用所谓的“recursion”合并策略,将合并基础(共同祖先)合并,直到剩下一个虚拟/有效的共同祖先(在一些简化中),并且可以做简单的三向合并。 – JakubNarębski的回答 检查一下在Git中如何和/或为什么合并比SVN更好?

如何只推动汞的一个分支?

我有一个Hg回购,其中有3个分支,但其中两个是无效的(因为我已经将它们合并到我的默认分支)。 hg头显示3个头,每个分支一个,即使hg分支显示其中2个分支“不活跃”。 当我尝试将默认分支(使用hg push –branch默认http:// … ) 推送到另一个repo时,合并中止并显示消息“abort:push创build新的远程分支:! 在Hg推送手册页中,“默认情况下,推送不允许在目的地创build新的头部,因为多个头部会使得不清楚要使用哪个头部,在这种情况下,推荐在推送之前拉和合并。 我已经这样做了,但我仍然不能推动 – 分支的默认没有被中止。 任何帮助表示赞赏。 谢谢!

Mercurial:如何忽略对跟踪文件的更改

我有我的项目中的数据库设置的文件,我已经设置了一些默认值。 该文件由Mercurial跟踪和签入。由于这个文件将被编辑不同的值不同的开发机器,有没有一种方法,我可以告诉Mercurial忽略此文件的新变化? 我试图将文件添加到.hgignore文件,但由于文件被跟踪,它不会被忽略。 这在其他情况下是好的,但是我想知道在这里我能做些什么吗?

我如何退出Mercurial的合并,然后与该分支重新合并?

我有两个分支,默认和分支1。 我们团队中的一个人错误地将branch1与默认值合并在一起。 branch1中的内容还没有准备好与默认合并(它包含了对构build和部署环境的重大修改)。 我们做了一个'hg backout'的实验,支持合并(不确定这是否正确)。 然后,从branch1的更改被删除默认情况下,这是很好的 – 但我们不能与branch1重新合并。 我们应该如何解决这个问题?

git相当于hg mq?

我刚开始使用Git和Mercurial一起熟悉Git。 我广泛使用Mercurial中的mq扩展来pipe理本地补丁,我正在寻找一个Git等价物。 我应该只使用Git分支? 还是有更好的方法来pipe理本地修补程序,可以轻松应用和删除修补程序? 谢谢,

你如何“回滚”在Mercurial上的最后一次提交?

我有一个Mercurial存储库,我只在本地使用…这是我的个人使用(所以我不“推”任何地方)。 我做了3个文件的提交,但之后我明白我应该提交4个文件… 有没有办法“回滚”我的最后 (最新,只有一个)提交,并“重新”与正确的文件? (我不知道为什么,但我的“ 修改当前修订 ”选项是不活跃的,所以我不能使用它…)

我如何从Mercurial克隆中删除工作副本?

在使用mercurial克隆存储库时,可以通过-U / – noupdate标志创build一个没有工作副本的克隆。 如果我忘记在克隆时间通过这个标志,我可以删除工作副本吗? 如果是的话,怎么样? 这在概念上类似于这个git问题 ,但是对于mercurial而言。

将HG项目从Bitbucket镜像到Github

有没有一个有效的工作stream程来镜像主要托pipe在使用Hg的bitbucket上的项目,github?