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 反复无常的问题如何处理不同的头脑_Version Control_Mercurial_Repository_Versioning - Fatal编程技术网

Version control 反复无常的问题如何处理不同的头脑

Version control 反复无常的问题如何处理不同的头脑,version-control,mercurial,repository,versioning,Version Control,Mercurial,Repository,Versioning,我的存储库不能合并,不能拉,不能更新,仅仅因为它不能简单地关闭不需要的错误磁头。似乎我在hg中做了一些改变,使合并变得复杂。我希望更改(heads)是相当不相关的,我只想启用一个head和一个分支 $ hg merge branch 'default' has 4 heads $ hg merge -r e571b17295e9 outstanding uncommitted changes (use 'hg status' to list changes) $ hg commit -m

我的存储库不能合并,不能拉,不能更新,仅仅因为它不能简单地关闭不需要的错误磁头。似乎我在hg中做了一些改变,使合并变得复杂。我希望更改(heads)是相当不相关的,我只想启用一个head和一个分支

$ hg merge
branch 'default' has 4 heads    
$ hg merge -r e571b17295e9
outstanding uncommitted changes (use 'hg status' to list changes)
$ hg commit -m ''
nothing changed
我忘了在什么地方推汞或拉汞了吗?如果没有任何更改,为什么会说未提交的更改?这是我从hg head获得的最新输出。我如何了解这些变化是什么? 为什么几乎不可能做一些简单的事情,比如除掉一个脑袋? 我并不好奇hg如何定义变更集、修订、头、分支等,我只希望简单的操作变得简单

$ hg head
ändring:     233:88de4be7943c
märke:       tip
användare:   niklasro
datum:       Mon Sep 05 18:30:37 2011 +0000
kortfattat:  addremove

ändring:     176:e571b17295e9
användare:   tekniklas
datum:       Sat Jan 08 04:45:07 2011 +0000
kortfattat:  twitter support added

ändring:     159:f8d974793b12
förälder:    157:ef1d955b9236
användare:   tekniklas
datum:       Sat Dec 18 17:05:45 2010 +0000
kortfattat:  remove

ändring:     89:008a2ac46b4f
användare:   tekniklas
datum:       Sun Aug 01 07:10:40 2010 +0000
kortfattat:  classifiedsmarket/market/market_ad_preview.html
我不完全理解如何使用mercurial,我希望有更多的控制,例如,看看这些日期发生了什么,当时有几个所谓的头。我基本上是这个存储库的唯一开发人员,但希望能够从多个位置对其进行更新。我之前问过这些更改,但我似乎不知道如何执行
hg pull
从存储库同步到本地。我可以做一个hg克隆并添加更改,但是上面列出的更改意味着我忘记了同步某些内容,我想让它更容易实现

现在hg diff、hg status和hg incomming没有显示任何更改,我已经设法清理了存储库(位于googlecode.com上),甚至通过googlecode.com的web ui更新了文件,所以我想使存储库和本地文件之间的同步更容易

谢谢你的建议

编辑:我可以看出变更集176:e571b17295e9并不重要,我只想将其与技巧合并,没有实际更改,但得到1个头部

所以我试着发现变更集是不可逆的,我不在乎这个变更:

$ hg diff -c e571b17295e9
diff -r f50d4c4461e5 -r e571b17295e9 classifiedsmarket/app.yaml
--- a/classifiedsmarket/app.yaml    Thu Jan 06 11:36:10 2011 +0000
+++ b/classifiedsmarket/app.yaml    Sat Jan 08 04:45:07 2011 +0000
@@ -4,6 +4,10 @@
 api_version: 1
 default_expiration: "400d 5h"
 handlers:
+- url: /twitter
+  script: /twitter_oauth_handler.py
+- url: /oauth.*
+  script: /twitter_oauth_handler.py
 - url: /
   script: i18n.py
 - url: /li
那么,为什么我需要对根本不重要的变更集进行如此多的管理呢

所以现在我尝试另一种方法,但也失败了。伟大的选择mercurial,您将无法进行开发,因为您所做的只是试图丢失一些垃圾:

hg update -r 123
hg commit --close-branch -m 'Closing old branch'
hg update -C default
我的尝试:

$ hg update -r e571b17295e9
avbryter: crosses branches (merge branches or use --clean to discard changes)
太好了,什么都不管用,我想做的很简单。我尝试了更多的方法来真正理解做一些简单的事情是不可能的,我们如何浪费时间去做最基本的事情,以及Mercurial如何不能做一些简单的事情:

$ hg head
ändring:     235:68bc6873fafb
märke:       tip
användare:   niklasro
datum:       Tue Sep 06 11:53:32 2011 +0000
kortfattat:  added fblist

ändring:     176:e571b17295e9
användare:   tekniklas
datum:       Sat Jan 08 04:45:07 2011 +0000
kortfattat:  twitter support added

ändring:     159:f8d974793b12
förälder:    157:ef1d955b9236
användare:   tekniklas
datum:       Sat Dec 18 17:05:45 2010 +0000
kortfattat:  remove

ändring:     89:008a2ac46b4f
användare:   tekniklas
datum:       Sun Aug 01 07:10:40 2010 +0000
kortfattat:  classifiedsmarket/market/market_ad_preview.html

$ hg merge -r e571b17295e9
avbryter: outstanding uncommitted changes (use 'hg status' to list changes)
所以我尝试了另一种方法,只是想弄清楚风投是如何完全阻止我进行开发的,而这些愚蠢的修订即使在你尝试做的非常简单的时候也不会起作用:

$ hg update -r e571b17295e9
avbryter: crosses branches (merge branches or use --clean to discard changes)
我结束了为我想要关闭的每个版本创建一个新的本地目录,克隆了该版本,关闭了它,提交并从本地克隆中推送它,它似乎已经工作了,但我这样做是否正确?似乎我仍然可以“打开”关闭的头部,这很好,但我还没有尝试与其他人的更改同步,也没有尝试通过googlecode.com的webui进行更改,并与本地克隆进行拉/合并

因此,我通过克隆3个修订版,将未提交的(?)变更集关闭到mercurial,并将它们逐个关闭,而不仅仅是hg head-r-close或一些可以处理未提交变更集的简单工具

现在看来问题解决了,我可以查看多个磁头是什么:

o  changeset:   181:bb0545ceff33
|  parent:      179:b03d10fc4260
|  user:        tekniklas
|  date:        Sun Jan 09 04:39:33 2011 +0000
|  summary:     twitter support
|
| o  changeset:   180:9bbefafbdb16
| |  parent:      178:e571b17295e9
| |  user:        niklasro
| |  date:        Tue Sep 06 14:09:19 2011 +0000
| |  summary:     close badbranch, this approach never worked
| |
o |  changeset:   179:b03d10fc4260
| |  parent:      177:f50d4c4461e5
| |  user:        tekniklas
| |  date:        Sun Jan 09 04:32:12 2011 +0000
| |  summary:     removed aeoid
| |
| o  changeset:   178:e571b17295e9
|/   user:        tekniklas
|    date:        Sat Jan 08 04:45:07 2011 +0000
|    summary:     twitter support added
|
o  changeset:   177:f50d4c4461e5
|  user:        tekniklas
|  date:        Thu Jan 06 11:36:10 2011 +0000
|  summary:     i18n reports

您可以运行

hg diff -c R
要查看您在变更集R中所更改的内容,还可以使用类似于OrtoisehG se的日志查看器查看这些内容,并查看变更集在变更集图形中的显示位置

基本工作周期为

# work
hg commit
# work
hg commit
hg push
# aborts: multiple remote heads
hg pull
# hg heads show two heads
hg merge
hg commit
hg push

看一下修订图,您会更清楚:

这可以通过以下方式完成:

  • hg发球
    并打开webbrowser
  • hg glog
    如果已启用图形日志扩展(使用
    -l 20
    仅执行最近20次提交)
  • 如果在操作系统上可用,请使用
它看起来像这样:


为了合并这些头部中的更改,您需要合并它们。参见上面的68040,它将两个磁头合并为一个磁头。如果您同时从多个位置提交,则这是必要的。

我查看了一个变更集,很明显,它与此无关。为什么很难摆脱它?我看了一个由多个头中的一个组成的变更集,它只改变了两行,这并不重要。我只是想忘记这种变化,继续发展,而不是这种违背直觉的管理,在那里,不可能做一些简单的事情。为什么mercurial很难做一些非常简单的事情,例如删除、删除、忘记更改?我不能合并,因为它说有4个头,所以我回到了我开始的4个头的位置,什么都不可能。@Niklas:如果只有2个头,并且您签出了一个,mercurial将自动与“另一个”合并。在其他情况下,需要指定要合并的修订。(使用Ortoisehg,您可以合并并选择从GUI中丢弃“其他”分支。这使得记录某个更改并不重要变得很容易)。(另外,我建议大家冷静下来,放松一下,试着阅读一些Mercurial常见问题解答,了解Mercurial是如何以及为什么使用Mercurial完成任务的。)谢谢。我可以通过克隆到该版本并关闭分支来关闭3个不需要的头。我粘贴了
hg glog
的输出,看起来这些分支的变更集并不重要,而且这些变更集的良好变更也被包括在内。我只是试着从googlecode.com的web用户界面上做一个小小的改变,现在我可以做
hg pull
hg update
,因为我对头、分支、修订、变更集、克隆、co:s、拉、更新、合并和推的含义感到相当困惑。我对合并很紧张,这样我就不必合并,分支就可以重新打开了。事实上,合并说的是“未完成的更改”,而且没有什么可提交的,这听起来有点过分了
hg diff -c R
# work
hg commit
# work
hg commit
hg push
# aborts: multiple remote heads
hg pull
# hg heads show two heads
hg merge
hg commit
hg push