I have a graphlog that looks something like this:
(snip) | | | o 1) Other Dev: Commit | | \ o | | 2) Me: Commit / | | | | | o | 3) Other Dev: Commits with an error | |/| | | o |/ 4) Me: Merge and commit | /| |/ | o | 5) Me: Realize there were bugs in the commit and take earlier version to merge with | o 6) Other Dev: Fixes error o / 7) Me: committing some changes |/ o 8) Me: Merge fixed tip
At (8), everything is as it should be with the exception of the dangling extra head at (4). To get rid of it I have to merge (4) -.-> (8) but, since there is nothing in (4) that I need, I can safely discard all of it's changes. I could do this merge manually file-by-file (and usually this isn't that big a deal) but for my own edification - is there a simple one-line way to say "merge (4) with (8) and always take (8)"?
Reverting Local Changes If you use the TortoiseHg client to work with Mercurial from TestComplete, you can cancel all local changes not committed to the repository yet: Select File > Source Control > Revert from the TestComplete main menu.
To merge two branches, you pull their heads into the same repository, update to one of them and merge the other, and then commit the result once you're happy with the merge. The resulting changeset has two parents.
Yes. The internal:local
builtin merge tool.
$ hg merge 4 --tool internal:local
Similarly there's internal:other
that picks the other version of files as the merged version.
Here's an example to clarify what's going on, start off with a repo with a single file:
$ echo a >> a $ hg ci -Am. adding a $ echo a >> a $ hg ci -Am.
Branch it and put a conflict in a
:
$ hg up 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo b >> a
Also add another file just in the merged in branch:
$ echo b >> b $ hg ci -Am. adding b created new head
Go back and merge the anonymous head:
$ hg up 1 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg merge 2 --tool internal:local 1 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit)
Naturally at this point without the merge tool we'd get a conflict on a
. But using the merge tool, we're telling Mercurial to take the version of the first parent on every file that the merged with cset has also touched.
$ hg st M a M b $ cat a a a $ cat b b
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With