File: SetupTopicStage.sh

package info (click to toggle)
insighttoolkit4 4.13.3withdata-dfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 489,260 kB
  • sloc: cpp: 557,342; ansic: 146,850; fortran: 34,788; python: 16,572; sh: 2,187; lisp: 2,070; tcl: 993; java: 362; perl: 200; makefile: 129; csh: 81; pascal: 69; xml: 19; ruby: 10
file content (109 lines) | stat: -rwxr-xr-x 3,599 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env bash
#==========================================================================
#
#   Copyright Insight Software Consortium
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#          http://www.apache.org/licenses/LICENSE-2.0.txt
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
#==========================================================================*/


# Run this script to set up the topic stage for pushing changes.

egrep-q() {
  egrep "$@" >/dev/null 2>/dev/null
}

die() {
  echo 'Failure during topic stage setup.' 1>&2
  echo '---------------------------------' 1>&2
  echo '' 1>&2
  echo "$@" 1>&2
  exit 1
}

# Make sure we are inside the repository.
cd "$(echo "$0"|sed 's/[^/]*$//')"

if git config remote.stage.url >/dev/null; then
  echo "Topic stage remote was already configured."
else
  echo "Configuring the topic stage remote..."
  git remote add stage https://itk.org/stage/ITK.git || \
    die "Could not add the topic stage remote."
  git config remote.stage.pushurl git@itk.org:stage/ITK.git
fi

echo -e "\nNote: push access is *NOT* required to get patches merged. Choose No (N) if you are unsure."
read -ep "Do you want to test push access to itk.org (only experienced contributors have push access)? [y/N]: " access
if [ "$access" == "y" ] || [ "$access" == "Y" ]; then

  echo "Configuring push urls..."
  if ! git config remote.origin.url | egrep-q "://itk.org/ITK.git"; then
    git config remote.origin.pushurl git@itk.org:ITK.git
  fi

  echo -e "Done.\n"

  # We will have the private key corresponding the public key at itk.org at
  # ~/.ssh/id_git_itk.  This allows the developer to keep a single public key
  # on file with the server across multiple machines.
  if ! egrep-q 'Host itk\.org' ~/.ssh/config; then
    echo "Configuring the IdentityFile for itk.org to be ~/.ssh/id_git_itk..."
    mkdir -p ~/.ssh
    chmod og-rwx ~/.ssh
    echo "Host itk.org" >> ~/.ssh/config
    echo "  IdentityFile=~/.ssh/id_git_itk" >> ~/.ssh/config
    chmod 600 ~/.ssh/config
  fi
  if ! test -e ~/.ssh/id_git_itk; then
    if test -f ~/.ssh/id_rsa; then
      # Take care of the common case.
      pushd ~/.ssh >/dev/null
      ln -s id_rsa id_git_itk
      popd >/dev/null
      cat << EOF

Assuming ~/.ssh/id_rsa is the private key corresponding to the public key given
for the 'git' user at itk.org.  If this is not the case, please place the
appropriate private key at ~/.ssh/id_git_itk.

EOF
      read -e -n 1 -p "Press any key to continue..."
    else
      cat << EOF

Please place the private key corresponding to the public key registered at
itk.org in '~/.ssh/id_git_itk'.

EOF
      read -e -n 1 -p "Press any key to continue..."
    fi
  fi
  echo "Testing ssh capabilities..."
  git ls-remote git@itk.org:stage/ITK.git refs/heads/master || \
    die "SSH test to git@itk.org failed. You may need to request access at:

https://www.kitware.com/Admin/SendPassword.cgi

Note that push access to the stage/ITK is separate to Gerrit.
"

  echo "Test successful! ITK push access confirmed. Summary of project access:"
  echo
  # This command queries gitolite for your access privileges
  ssh git@itk.org info

fi

echo "Done."