你能否告诉我如何删除我在本地制作的更改?
在git,我可以做git checkout -- aFile.cpp,我怎么能做同样的事情hg?
我一直在使用Mercurial,但主要是供我自己使用.现在,我有一个项目,我正在努力建立同一个项目,我们可能会修改彼此的文件.
我想在服务器上设置Mercurial存储库,使该存储库成为"服务器",因此我的更改和其他编辑器的更改都推送到该服务器(所以基本上是Subversion/CVS模型); 我喜欢Mercurial但不想切换到像Subversion这样的东西.
在我自己的网络中,一切都在Linux上完成,我的"服务器" 安装了OpenSSH.因此,将我的更改(我在多台计算机上工作)从一台计算机推送到服务器只是"hg push"的问题; 使用的协议是SSH以传输更改.
问题是我使用Linux,服务器将是Windows(所以没有OpenSSH,对吧?)而另一个编辑器也将使用Windows.据我所知,在这些类型的设置中使用Mercurial的最佳方式是存储库从源中提取更改,而不是将源推送到"服务器".我落后于几个防火墙(不完全是我的网络),我的计算机将无法从服务器上看到,我假设其他编辑器也将在防火墙后面(所以我们不能只启动本地Mercurial HTTP服务器并从中获取"服务器"计算机).
对于两位编辑来说,更改服务器存储库的最佳方法是什么?(我应该补充一点,服务器是因特网上的服务器,因此它就像是一样可见google.com.它是托管的Windows服务器,但如果需要,我可能有权安装软件.)
我最近和hg/mercurial一起涉足,即与Fogcreek的Kiln一起,我正在试图找出必须具有的扩展.它通过扩展列表进行了一些小巧的筛选,因为我对测试任何错误或不切实际的扩展都不感兴趣,即使它们的描述听起来很棒.
那么,你使用哪些hg扩展?
请参阅使用扩展
这是一个困扰我一段时间的问题.我完成了我的作业并检查了stackoverflow,至少找到了关于我的问题的两个主题: Git for Mercurial,如git-svn和 Git与Mercurial存储库的互操作性
我已经做了一些严肃的谷歌搜索来解决这个问题,但到目前为止没有运气.我还阅读了Git Internals的书,以及Mercurial Definitive Behind the Scenes来试图解决这个问题.我仍然有点疑惑为什么我找不到任何合适的git-hg类型的工具.
从我的角度来看,git-svn是其中一个主要特性,为什么我选择在工作中使用git而不是mercurial.它允许我使用我喜欢的工作流程,如果他们不在乎,没有其他人需要打扰.我只是没有看到使用中间hg repo来回转换的重点,正如其中一个链中所建议的那样.
所以无论如何,从我读过的内容来看,hg和git在概念设计上看起来非常相似.引擎盖下存在差异,但这些都不会阻止为hg创建git客户端.在我看来,远程跟踪分支和章鱼合并使得git比hg更强大.
那么,真正的问题是,为什么git-hg不存在(或者至少很难找到)有任何真正的原因吗?git用户(和开发人员)对他们的hg对手是否有一些敌意导致缺乏git-hg工具?你们有没有计划开发类似的东西,并公开上市?我可以自愿参加(尽管有非常微弱的C技能)参与完成这项工作.我只是没有完全的知识来自己开始这个.
这可能是结束所有DVCS战争的工具吗?
是否有可能只在Git和Mercurial中克隆一个分支(或来自给定的提交)?我的意思是,我想要克隆一个中央回购,但由于它很庞大,我只想获得它的一部分,并且仍能够回馈我的变化.可能吗?比如,我只想从Tag 130开始或类似的东西?
如果是这样,怎么样?
mercurial中是否有一个命令会列出当前受源代码管理的所有文件?
我可以做一个dir /s列出我的文件夹和子文件夹中的所有文件,但我不知道哪些已添加到我的存储库.我有各种排除的文件类型和文件夹,我想验证在我的.hgignore文件中设置它们之前没有添加它们.
我对Mercurial相对较新,我的团队现在正在尝试将其作为Subversion的替代品.
如何将单个文件提交并推送到另一个存储库,同时保留我的工作目录中的其他修改未提交(或者至少不推送到其他存储库)?
这种情况发生在我们的数据库迁移中.我们希望将迁移提交到源代码控制,以便DBA可以在我们处理代码修改时查看和编辑它,以便与数据库迁移一起进行.这些变化还没有准备好,所以我们不想把它们全部推出去.
在颠覆中,我只是这样做:
svn add my_migration.sql
# commit only the migration, but not the other files I'm working on
svn commit -m "migration notes" my_mygration.sql
Run Code Online (Sandbox Code Playgroud)
并继续在当地工作.
这不适用于mercurial,因为当我将它推送到另一个存储库时,如果我没有删除它的更改,它希望我将它们拉下来,合并它们并将该合并提交到存储库.合并后提交不允许您省略文件,因此它会强制您提交本地存储库中的所有内容.
我能想到的最简单的事情是将文件提交到我的本地存储库,克隆我的本地存储库,从实际存储库中获取任何新的更改,合并它们并提交该合并,然后它们将我的更改推送出去.
hg add my_migration.sql
hg commit -m "migration notes" my_migration.sql
cd ..
hg clone project project-clone
cd project-clone
hg fetch http://hg/project
hg push http://hg/project
Run Code Online (Sandbox Code Playgroud)
这样可行,但感觉我错过了一些更简单的东西,某种方式告诉mercurial忽略我工作目录中已有的文件,只需进行合并并发送文件.我怀疑mercurial队列可以做到这一点,但我还没有完全搞定mq.
我切换到我本地仓库的一个分支,发现它给了我显示x文件更新的消息.这令我感到惊讶,因为我不知道那个分支有什么不同.如何将该分支与默认分支进行比较以查看更改内容?
好吧,我有一个小谷歌,无法找到解决方案,因为我偶然发现了相同的消息,但人们有不同的方式.我是mecurial的新手,想要确保我正确地做到这一点.
所以我收到上面的错误信息.我有一个开发站点和一个实时站点,我正在尝试将代码推送到代码库.
然而昨天我不小心hg add添加了所有我不想做的媒体.之后我确实从代码库中删除了所有媒体文件,然后提交并推送更改.所以今天我一直在改变CSS文件和一些模板.我已经去提交我的更改并推送它们但是当我运行时hg push我得到上面的错误.
我运行hg log并且只有6次提交,因为它是一个干净的/新的分支/项目.任何帮助将不胜感激,如果我没有正确解释,我道歉!