Net installer: make contributing via 'mob' easier
[msysgit.git] / share / msysGit / net / setup-msysgit.sh
blob0b9930c3f0919fd6199707144e1993846e49e4a6
1 #!/bin/sh
3 # We're already in the install directory
4 INSTALL_PATH="$(pwd)"
5 export PATH="$INSTALL_PATH/installer-tmp/bin:$PATH"
7 error () {
8 echo "* error: $*"
9 echo INSTALLATION ABORTED
10 read -e IGNORED_INPUT
11 trap - exit
12 exit 1
15 echo -------------------------------------------------------
16 echo Checking environment
17 echo -------------------------------------------------------
18 type cygpath >/dev/null 2>/dev/null && {
19 echo "Cygwin seems to be in your system path. This was detected"
20 echo "by trying to run cygpath, which was found by this shell."
21 echo ""
22 echo "Cygwin may cause severe problems, like crashes, if used in"
23 echo "combination with msysgit. Please remove Cygwin from you system"
24 echo "PATH environment variable."
25 echo ""
26 echo "For assistance on how to control your environment variables"
27 echo "you should consult Microsoft's knowlege base:"
28 echo " Windows XP: http://support.microsoft.com/kb/310519"
29 echo " Windows NT: http://support.microsoft.com/kb/100843"
30 echo ""
31 error "Can not install msysgit when Cygwin is in PATH."
33 echo "Environment is clean. Can install msysgit."
35 echo
36 echo -------------------------------------------------------
37 echo Fetching the latest MSys environment
38 echo -------------------------------------------------------
39 MSYSGIT_REPO_GIT=git://repo.or.cz/msysgit.git
40 MSYSGIT_REPO_GIT_MOB=ssh://mob@repo.or.cz/srv/git/msysgit.git
41 MSYSGIT_REPO_HTTP=http://repo.or.cz/r/msysgit.git
43 # Multiply git.exe
45 for builtin in init unpack-objects update-ref fetch ls-remote clone checkout
47 ln "$INSTALL_PATH/installer-tmp/bin/git.exe" \
48 "$INSTALL_PATH/installer-tmp/bin/git-$builtin.exe"
49 done
51 git init &&
52 git config core.autocrlf false &&
53 git config remote.origin.url $MSYSGIT_REPO_GIT &&
54 git config remote.origin.fetch \
55 +refs/heads/@@MSYSGITBRANCH@@:refs/remotes/origin/@@MSYSGITBRANCH@@ &&
56 git config branch.@@MSYSGITBRANCH@@.remote origin &&
57 git config branch.@@MSYSGITBRANCH@@.merge refs/heads/@@MSYSGITBRANCH@@ &&
58 git config remote.mob.url $MSYSGIT_REPO_GIT_MOB &&
59 git config remote.mob.fetch +refs/heads/@@MSYSGITBRANCH@@:refs/remotes/origin/mob &&
60 git config remote.mob.push HEAD:mob &&
62 USE_HTTP=
63 git fetch || {
64 USE_HTTP=t &&
65 git config remote.origin.url $MSYSGIT_REPO_HTTP &&
66 git fetch || {
67 echo -n "Please enter a HTTP proxy: " &&
68 read proxy &&
69 test ! -z "$proxy" &&
70 export http_proxy="$proxy" &&
71 git fetch
72 } ||
73 error "Could not get msysgit.git"
76 git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
78 echo
79 echo -------------------------------------------------------
80 echo Checking out the @@MSYSGITBRANCH@@ branch
81 echo -------------------------------------------------------
82 git-checkout -l -f -q -b @@MSYSGITBRANCH@@ origin/@@MSYSGITBRANCH@@ ||
83 error Couldn\'t checkout the @@MSYSGITBRANCH@@ branch!
84 mkdir -p .git/hooks &&
85 cp share/msysGit/post-checkout-hook .git/hooks/post-checkout ||
86 error Could not install post-checkout hook
88 # TEMP: Remove pre-existing git directory
89 rm -rf git
92 echo
93 echo -------------------------------------------------------
94 echo Fetching the latest MinGW Git sources
95 echo -------------------------------------------------------
97 case "$USE_HTTP" in
99 GIT_REPO_URL=http://repo.or.cz/r/git.git/
100 MINGW_REPO_URL=http://repo.or.cz/r/git/mingw.git/
101 MINGW4MSYSGIT_REPO_URL=http://repo.or.cz/r/git/mingw/4msysgit.git/
104 GIT_REPO_URL=git://repo.or.cz/git.git
105 MINGW_REPO_URL=git://repo.or.cz/git/mingw.git
106 MINGW4MSYSGIT_REPO_URL=git://repo.or.cz/git/mingw/4msysgit.git
108 esac
109 MINGW4MSYSGIT_MOB_URL=ssh://mob@repo.or.cz/srv/git/git/mingw/4msysgit.git
111 git config submodule.git.url $MINGW4MSYSGIT_REPO_URL &&
112 mkdir -p git &&
113 cd git &&
114 git init &&
115 git config core.autocrlf input &&
116 git config remote.junio.url $GIT_REPO_URL &&
117 git config remote.junio.fetch '+refs/heads/*:refs/remotes/junio/*' &&
118 git fetch --tags junio &&
119 git config remote.mingw.url $MINGW_REPO_URL &&
120 git config remote.mingw.fetch '+refs/heads/*:refs/remotes/mingw/*' &&
121 git fetch --tags mingw &&
122 git config remote.origin.url $MINGW4MSYSGIT_REPO_URL &&
123 git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*' &&
124 git config remote.mob.url $MINGW4MSYSGIT_MOB_URL &&
125 git config remote.mob.fetch '+refs/heads/*:refs/remotes/origin/*' &&
126 git config remote.mob.push 'HEAD:mob' &&
127 git fetch --tags origin &&
128 if test -z "@@FOURMSYSGITBRANCH@@"
129 then
130 FOURMSYS=origin/devel
131 else
132 FOURMSYS=origin/@@FOURMSYSGITBRANCH@@
133 fi &&
134 git config branch.${FOURMSYS#origin/}.remote origin &&
135 git config branch.${FOURMSYS#origin/}.merge refs/heads/${FOURMSYS#origin/} &&
136 git fetch origin &&
137 git checkout -l -f -q -b ${FOURMSYS#origin/} $FOURMSYS ||
138 error Couldn\'t update submodule git!
140 echo
141 echo -------------------------------------------------------
142 echo Fetching HTML help pages
143 echo -------------------------------------------------------
145 cd .. &&
146 rm -rf /doc/git/html &&
147 git config submodule.html.url $GIT_REPO_URL &&
148 mkdir -p doc/git/html &&
149 cd doc/git/html &&
150 git init &&
151 git config remote.origin.url $GIT_REPO_URL &&
152 git config remote.origin.fetch '+refs/heads/html:refs/remotes/origin/html' &&
153 git fetch origin &&
154 git checkout -l -f -q $(cd ../../.. && git ls-tree HEAD doc/git/html |
155 sed -n "s/^160000 commit \(.*\).doc\/git\/html$/\1/p") ||
156 error "Couldn't update submodule doc/git/html (HTML help will not work)."