Version control 反复无常的问题如何处理不同的头脑
我的存储库不能合并,不能拉,不能更新,仅仅因为它不能简单地关闭不需要的错误磁头。似乎我在hg中做了一些改变,使合并变得复杂。我希望更改(heads)是相当不相关的,我只想启用一个head和一个分支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 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
看一下修订图,您会更清楚: 这可以通过以下方式完成:
并打开webbrowserhg发球
如果已启用图形日志扩展(使用hg glog
仅执行最近20次提交)-l 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