Mercurial > hg
annotate contrib/editmerge @ 29783:5d44197c208b
profiling: make profiling functions context managers (API)
This makes profiling more flexible since we can now call multiple
functions when a profiler is active. But the real reason for this
is to enable a future consumer to profile a function that returns
a generator. We can't do this from the profiling function itself
because functions can either be generators or have return values:
they can't be both. So therefore it isn't possible to have a generic
profiling function that can both consume and re-emit a generator
and return a value.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 14 Aug 2016 18:25:22 -0700 |
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 |