Mercurial > hg
annotate contrib/editmerge @ 40446:b6bc2293cdf3 stable
setup: explain to distutils how we write rc versions
When we use a rc version number (e.g. 4.8rc0), bdist_msi is using
distutils.StrictVersion to parse it into a tuple of numbers.
By default, StrictVersion.version_re only recognizes [ab] for alpha/beta,
where mercurial may use '-rc' or 'rc'.
This change makes StrictVersion parse correctly our version numbers, so that
bdist_msi doesn't fail on rc versions.
author | "Paul Morelle <paul.morelle@octobus.net" |
---|---|
date | Wed, 31 Oct 2018 20:32:42 +0100 |
parents | 612502900a2d |
children |
rev | line source |
---|---|
20831
864c56cb8945
contrib: don't hardcode path to bash interpreter
Olle Lundberg <geek@nerd.sh>
parents:
20010
diff
changeset
|
1 #!/usr/bin/env bash |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
2 # A simple script for opening merge conflicts in the editor. |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
3 # Use the following Mercurial settings to enable it. |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
4 # |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
5 # [ui] |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
6 # merge = editmerge |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
7 # |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
8 # [merge-tools] |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
9 # editmerge.args=$output |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
10 # editmerge.check=changed |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
11 # editmerge.premerge=keep |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
12 |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
13 FILE="$1" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
14 |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
15 getlines() { |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
16 grep -n "^<<<<<<" "$FILE" | cut -f1 -d: |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
17 } |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
18 |
26421
4b0fc75f9403
urls: bulk-change primary website URLs
Matt Mackall <mpm@selenic.com>
parents:
20831
diff
changeset
|
19 # editor preference loosely based on https://mercurial-scm.org/wiki/editor |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
20 # hg showconfig is at the bottom though, since it's slow to run (0.15 seconds) |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
21 ED="$HGEDITOR" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
22 if [ "$ED" = "" ] ; then |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
23 ED="$VISUAL" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
24 fi |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
25 if [ "$ED" = "" ] ; then |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
26 ED="$EDITOR" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
27 fi |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
28 if [ "$ED" = "" ] ; then |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
29 ED="$(hg showconfig ui.editor)" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
30 fi |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
31 if [ "$ED" = "" ] ; then |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
32 echo "merge failed - unable to find editor" |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
33 exit 1 |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
34 fi |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
35 |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
36 if [ "$ED" = "emacs" ] || [ "$ED" = "nano" ] || [ "$ED" = "vim" ] ; then |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
37 FIRSTLINE="$(getlines | head -n 1)" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
38 PREVIOUSLINE="" |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
39 |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
40 # open the editor to the first conflict until there are no more |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
41 # or the user stops editing the file |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
42 while [ ! "$FIRSTLINE" = "" ] && [ ! "$FIRSTLINE" = "$PREVIOUSLINE" ] ; do |
26804
612502900a2d
editmerge: dequote other use of $ED
Ryan McElroy <rmcelroy@fb.com>
parents:
26771
diff
changeset
|
43 $ED "+$FIRSTLINE" "$FILE" |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
44 PREVIOUSLINE="$FIRSTLINE" |
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
45 FIRSTLINE="$(getlines | head -n 1)" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
46 done |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
47 else |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
48 $ED "$FILE" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
49 fi |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
50 |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
51 # get the line numbers of the remaining conflicts |
26771
a723f900d212
editmerge: properly quote variables
Ryan McElroy <rmcelroy@fb.com>
parents:
26743
diff
changeset
|
52 CONFLICTS="$(getlines | sed ':a;N;$!ba;s/\n/, /g')" |
20010
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
53 if [ ! "$CONFLICTS" = "" ] ; then |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
54 echo "merge failed - resolve the conflicts (line $CONFLICTS) then use 'hg resolve --mark'" |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
55 exit 1 |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
56 fi |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
57 |
34d720b3b33e
contrib: add editmerge script for editor conflict prompts
Durham Goode <durham@fb.com>
parents:
diff
changeset
|
58 exit 0 |