]> git.ipfire.org Git - thirdparty/gcc.git/blame - contrib/gcc-git-customization.sh
Add *.md diff=md.
[thirdparty/gcc.git] / contrib / gcc-git-customization.sh
CommitLineData
743d4d82
RE
1#!/bin/sh
2
3# Script to add some local git customizations suitable for working
4# with the GCC git repository
5
6ask () {
7 question=$1
8 default=$2
9 var=$3
10 echo -n $question "["$default"]? "
11 read answer
12 if [ "x$answer" = "x" ]
13 then
14 eval $var=$default
15 else
16 eval $var=$answer
17 fi
18}
19
20# Add a git command to find the git commit equivalent to legacy SVN revision NNN
21git config alias.svn-rev '!f() { rev=$1; shift; git log --all --grep="From-SVN: r\\?$rev\\b" "${@}"; } ; f'
22
e19db6a2
JJ
23# Add git commands to convert git commit to monotonically increasing revision number
24# and vice versa
6ff7efb7
JJ
25git config alias.gcc-descr \!"f() { if test \${1:-no} = --full; then r=\$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' \${2:-master} | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match \${r:-no} '^r[0-9]\\+\$' >/dev/null && r=\${r}-0-g\$(git rev-parse \${2:-master}); test -n \$r && echo \${r}; else git describe --all --match 'basepoints/gcc-[0-9]*' \${1:-master} | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-\\([0-9]\\+\\)-\\([0-9]\\+\\)-g[0-9a-f]*\$,r\\2-\\3,p;s,^\\(tags/\\)\\?basepoints/gcc-\\([0-9]\\+\\)\$,r\\2-0,p'; fi; }; f"
26git config alias.gcc-undescr \!"f() { o=\$(git config --get gcc-config.upstream); r=\$(echo \$1 | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\$,\\1,p'); n=\$(echo \$1 | sed -n 's,^r[0-9]\\+-\\([0-9]\\+\\)\$,\\1,p'); test -z \$r && echo Invalid id \$1 && exit 1; h=\$(git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$r); test -z \$h && h=\$(git rev-parse --verify --quiet \${o:-origin}/master); p=\$(git describe --all --match 'basepoints/gcc-'\$r \$h | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+-\\([0-9]\\+\\)-g[0-9a-f]*\$,\\2,p;s,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+\$,0,p'); git rev-parse --verify \$h~\$(expr \$p - \$n); }; f"
e19db6a2 27
affb7b66 28# Make diff on MD files use "(define" as a function marker.
743d4d82
RE
29# Use this in conjunction with a .gitattributes file containing
30# *.md diff=md
31git config diff.md.xfuncname '^\(define.*$'
32
33upstream=`git config --get "gcc-config.upstream"`
34if [ "x$upstream" = "x" ]
35then
36 upstream="origin"
37fi
38ask "Local name for upstream repository" "origin" upstream
39git config "gcc-config.upstream" "$upstream"
40
41remote_id=`git config --get "gcc-config.user"`
42if [ "x$remote_id" = "x" ]
43then
44 # See if the url specifies the remote user name.
45 url=`git config --get "remote.$upstream.url"`
46 if [ "x$url" = "x" ]
47 then
48 # This is a pure guess, but for many people it might be OK.
49 remote_id=`whoami`
50 else
51 remote_id=`echo $url | sed -r "s|^.*ssh://(.+)@gcc.gnu.org.*$|\1|"`
52 if [ x$remote_id = x$url ]
53 then
54 remote_id=`whoami`
55 fi
56 fi
57fi
e6107422 58ask "Account name on gcc.gnu.org (for your personal branches area)" $remote_id remote_id
743d4d82
RE
59git config "gcc-config.user" "$remote_id"
60
61old_pfx=`git config --get "gcc-config.userpfx"`
62if [ "x$old_pfx" = "x" ]
63then
64 old_pfx="me"
65fi
66echo "Local branch prefix for personal branches you want to share"
67echo "(local branches starting <prefix>/ can be pushed directly to your"
68ask "personal area on the gcc server)" $old_pfx new_pfx
69git config "gcc-config.userpfx" "$new_pfx"
70
71echo "Setting up tracking for personal namespace $remote_id in remotes/$upstream/${new_pfx}"
72git config --replace-all "remote.${upstream}.fetch" "+refs/users/${remote_id}/heads/*:refs/remotes/${upstream}/${new_pfx}/*" ":refs/remotes/${upstream}/${old_pfx}/"
73git config --replace-all "remote.${upstream}.fetch" "+refs/users/${remote_id}/tags/*:refs/tags/${new_pfx}/*" ":refs/tags/${old_pfx}/"
e6107422
RE
74
75push_rule=`git config --get "remote.${upstream}.push"`
76if [ "x$push_rule" != "x" ]
77then
78 echo "***********************************************"
79 echo " Warning"
80 echo "***********************************************"
81 echo
82 echo "Old versions of this script used to add custom push"
83 echo "rules to simplify pushing to personal branches."
84 echo "Your configuration contains such rules, but we no-longer"
85 echo "recommend doing this."
86 echo
87 echo "To delete these rules run:"
88 echo " git config --unset-all \"remote.${upstream}.push\""
89fi