3 . ./.jprojects.sh || exit 255
6 WANTED_NAME1="upstream"
7 WANTED_NAME2="daedalus"
8 WANTED_NAME3="transport"
12 GIT_SERVER="git.mxchange.org"
13 GIT_PATH="/var/cache/git/repos"
19 MEDIA_NAME2="Transport"
21 MEDIA_PATH="Java Project"
23 for project in ${LIST}; do
24 if [ "${project}" = "jprojects-scripts" ]
26 echo "$0: Skipping jprojects-scripts ..."
28 elif [ ! -d "${JPROJECTS_HOME}/${project}" ]
30 echo "$0: Project '${project}' does not exist."
34 echo "$0: project='${project}'"
35 cd "${JPROJECTS_HOME}/${project}" || exit 255
37 GIT_URL1="${GIT_USER}@${GIT_SERVER}:${GIT_PATH}/${project}.git"
38 GIT_URL2="${GIT_PATH}/${project}.git"
39 GIT_URL3="${MEDIA_BASE}/${USER}/${MEDIA_NAME2}/${MEDIA_PATH}/${project}.git"
40 GIT_URL4="file:///E:/Java%20Project/${project}.git"
41 GIT_URL5="E:/Java Project/${project}.git"
42 GIT_URL6="${MEDIA_BASE}/${USER}/${MEDIA_NAME1}/${MEDIA_PATH}/${project}.git"
43 GIT_URL7="${MEDIA_BASE}/${USER}/${MEDIA_NAME3}/${MEDIA_PATH}/${project}.git"
44 echo "$0: GIT_URL1='${GIT_URL1}'"
45 echo "$0: GIT_URL2='${GIT_URL2}'"
46 echo "$0: GIT_URL3='${GIT_URL3}'"
47 echo "$0: GIT_URL4='${GIT_URL4}'"
48 echo "$0: GIT_URL5='${GIT_URL5}'"
49 echo "$0: GIT_URL6='${GIT_URL6}'"
50 echo "$0: GIT_URL7='${GIT_URL7}'"
54 echo "$0: Listing remotes for '${project}' ..."
59 REMOTES=$(git remote | wc -l)
60 echo "$0: REMOTES='${REMOTES}'"
62 if [ "${REMOTES}" = "0" ]
64 if [ -n "${SHELL}" -a -f "/proc/version" ]
66 echo "$0: Found no repositories in '${project}'. Creating all (Linux) ..."
67 git remote add "${GIT_ORIGIN}" "${GIT_URL6}" --track "${GIT_BRANCH}"
68 git remote add "${WANTED_NAME1}" "${GIT_URL1}"
69 git remote add "${WANTED_NAME2}" "${GIT_URL2}"
70 git remote add "${WANTED_NAME3}" "${GIT_URL3}"
71 git remote add "${WANTED_NAME4}" "${GIT_URL4}"
73 echo "$0: Don't know how to create repositories, maybe unsupported."
76 elif [ "${REMOTES}" = "1" ]
78 echo "$0: Only one remote found for '${project}'"
81 REMOTE_PUSH=$(git remote -v | grep "push")
82 echo "$0: REMOTE='${REMOTE}',REMOTE_PUSH='${REMOTE_PUSH}'"
84 MEDIA1=$(echo "${REMOTE_PUSH}" | grep "${MEDIA_BASE}/${USER}/${MEDIA_NAME1}/")
85 echo "$0: MEDIA1='${MEDIA1}'"
89 echo "$0: Found '${MEDIA_BASE}/${USER}/${MEDIA_NAME1}' remote for '${project}'."
90 if [ "${REMOTE}" = "${GIT_ORIGIN}" ]
92 echo "$0: Project '${project}' has already fixed '${GIT_ORIGIN}'."
94 echo "$0: Renaming '${REMOTE}' to '${GIT_ORIGIN}' ..."
95 git remote rename "${REMOTE}" "${GIT_ORIGIN}" || exit 255
98 echo "$0: Not a media remote."
99 MXCHANGE_REMOTE=$(echo "${REMOTE_PUSH}" | grep "${GIT_URL1}")
100 LINUX_MEDIA_PATH_REMOTE=$(echo "${REMOTE_PUSH}" | grep "${GIT_URL3}")
101 WINDOWS_FILE_REMOTE=$(echo "${REMOTE_PUSH}" | grep "${GIT_URL4}")
102 WINDOWS_PATH_REMOTE=$(echo "${REMOTE_PUSH}" | grep "${GIT_URL5}")
103 echo "$0: MXCHANGE_REMOTE='${MXCHANGE_REMOTE}',WINDOWS_FILE_REMOTE='${WINDOWS_FILE_REMOTE}',WINDOWS_PATH_REMOTE='${WINDOWS_PATH_REMOTE}',LINUX_MEDIA_PATH_REMOTE='${LINUX_MEDIA_PATH_REMOTE}'"
105 if [ -n "${MXCHANGE_REMOTE}" ]
107 echo "$0: Found a '${GIT_SERVER}' remote."
109 if [ -n "${WANTED_NAME1}" -a "${REMOTE}" != "${WANTED_NAME1}" ]
111 echo "$0: Project '${project}' has one correct '${WANTED_NAME1}'."
113 echo "$0: Renaming '${REMOTE}' to '${WANTED_NAME1}' ..."
114 git remote rename "${REMOTE}" "${WANTED_NAME1}" || exit 255
117 echo "$0: Adding '${GIT_ORIGIN}' to '${project}' ..."
118 git remote add "${GIT_ORIGIN}" "${MEDIA_BASE}/${USER}/${MEDIA_NAME1}/${MEDIA_PATH}/${project}.git" --track "${GIT_BRANCH}" || exit 255
119 elif [ -n "${WINDOWS_FILE_REMOTE}" -o -n "${WINDOWS_PATH_REMOTE}" ]
121 echo "$0: Found a Windows (USB stick) remote."
123 if [ -n "${WANTED_NAME3}" -a "${REMOTE}" == "${WANTED_NAME3}" ]
125 echo "$0: Project '${project}' has one correct '${WANTED_NAME3}'."
127 echo "$0: Renaming '${REMOTE}' to '${WANTED_NAME3}' ..."
128 git remote rename "${REMOTE}" "${WANTED_NAME3}" || exit 255
131 echo "$0: Adding '${GIT_ORIGIN}' to '${project}' ..."
132 git remote add "${GIT_ORIGIN}" "${GIT_URL1}" --track "${GIT_BRANCH}" || exit 255
133 elif [ -n "${LINUX_MEDIA_PATH_REMOTE}" ]
135 echo "$0: Found a Linux (USB stick) remote."
137 if [ -n "${GIT_ORIGIN}" -a "${REMOTE}" = "${GIT_ORIGIN}" ]
139 echo "$0: Need to fix remote repositories ..."
140 git remote rename origin transport || exit 255
141 git remote add "${GIT_ORIGIN}" "${GIT_URL6}" --track "${GIT_BRANCH}" || exit 255
142 git remote add "${WANTED_NAME1}" "${GIT_URL1}" --track "${GIT_BRANCH}" || exit 255
143 git remote add "${WANTED_NAME2}" "${GIT_URL2}" --track "${GIT_BRANCH}" || exit 255
145 echo "$0: Don't know how to fix '${REMOTE}' (${REMOTE_PUSH})."
149 echo "$0: Unknown remote '${REMOTE_PUSH}' found. Exiting ..."
155 UNWANTED_REMOTE=$(git remote | grep "${UNWANTED_NAME}")
156 echo "$0: UNWANTED_REMOTE='${UNWANTED_REMOTE}'"
158 if [ -n "${UNWANTED_REMOTE}" ]
160 echo "$0: Found remote '${UNWANTED_NAME}' in '${project}'. Renaming '${GIT_ORIGIN}'->'${WANTED_NAME1}' and '${UNWANTED_NAME}'->'${GIT_ORIGIN}' ..."
162 UPSTREAM_REMOTE=$(git remote | grep "${WANTED_NAME1}")
163 echo "$0: UPSTREAM_REMOTE='${UPSTREAM_REMOTE}'"
165 if [ -n "${UPSTREAM_REMOTE}" ]
167 echo "$0: Remotes '${UNWANTED_NAME}' and '${WANTED_NAME1}' exist! Removing '${WANTED_NAME1}' ..."
168 git remote rm "${WANTED_NAME1}" || exit 255
171 git remote rename "${GIT_ORIGIN}" "${WANTED_NAME1}" || exit 255
172 git remote rename "${UNWANTED_NAME}" "${GIT_ORIGIN}" || exit 255
174 echo "$0: No unwanted '${UNWANTED_NAME}' remote in '${project}' ..."
175 UPSTREAM_REMOTE1=$(git remote | grep "${WANTED_NAME1}")
176 UPSTREAM_REMOTE2=$(git remote | grep "${WANTED_NAME2}")
177 UPSTREAM_REMOTE3=$(git remote | grep "${WANTED_NAME3}")
178 UPSTREAM_REMOTE4=$(git remote | grep "${WANTED_NAME4}")
179 echo "$0: UPSTREAM_REMOTE1='${UPSTREAM_REMOTE1}',UPSTREAM_REMOTE2='${UPSTREAM_REMOTE2}',UPSTREAM_REMOTE3='${UPSTREAM_REMOTE3},UPSTREAM_REMOTE4='${UPSTREAM_REMOTE4}'"
181 if [ -n "${UPSTREAM_REMOTE1}" ]
183 echo "$0: Wanted remote '${WANTED_NAME1}' already found in '${project}'."
185 echo "$0: No wanted '${WANTED_NAME1}' in '${project}'. Adding ..."
186 git remote add "${WANTED_NAME1}" "${GIT_URL1}" --track "${GIT_BRANCH}" || exit 255
189 if [ -n "${UPSTREAM_REMOTE2}" ]
191 echo "$0: Remote '${WANTED_NAME2}' found in '${project}'."
192 elif [ ! -d "${GIT_URL2}" ]
194 echo "$0: Remote '${WANTED_NAME2}' cannot be created, path '${GIT_URL2}' missing."
195 elif [ -n "${WANTED_NAME2}" ]
197 echo "$0: No wanted '${WANTED_NAME2}' in '${project}'. Adding ..."
198 git remote add "${WANTED_NAME2}" "${GIT_URL2}" --track "${GIT_BRANCH}" || exit 255
201 if [ -n "${UPSTREAM_REMOTE3}" ]
203 echo "$0: Remote '${WANTED_NAME3}' found in '${project}'."
204 elif [ ! -d "${GIT_URL3}" ]
206 echo "$0: Remote '${WANTED_NAME3}' cannot be created, path '${GIT_URL3}' missing."
208 echo "$0: No wanted '${WANTED_NAME3}' in '${project}'. Adding ..."
209 git remote add "${WANTED_NAME3}" "${GIT_URL3}" --track "${GIT_BRANCH}" || exit 255
212 if [ -n "${UPSTREAM_REMOTE4}" ]
214 echo "$0: Remote '${WANTED_NAME4}' found in '${project}'."
215 elif [ ! -d "${GIT_URL4}" ]
217 echo "$0: Remote '${WANTED_NAME4}' cannot be created, path '${GIT_URL4}' missing."
219 echo "$0: No wanted '${WANTED_NAME4}' in '${project}'. Adding ..."
220 git remote add "${WANTED_NAME4}" "${GIT_URL4}" --track "${GIT_BRANCH}" || exit 255
224 echo "$0: Setting upstream to '${GIT_ORIGIN}/${GIT_BRANCH}' ..."
225 git branch --set-upstream-to "${GIT_ORIGIN}/${GIT_BRANCH}"
227 # Is not an application by default
230 # Now "walk" through all base application names
231 for APP_NAME in ${BASE_APPLICATION_NAMES}; do
232 echo "$0: project='${project}',APP_NAME='${APP_NAME}'"
234 # Is it part of the project's name?
235 PART=$(echo "${project}" | grep "${APP_NAME}")
240 # Skip this entire loop
244 # Found one that maybe needs fixing
247 # Skip further search
251 echo "$0: IS_APP='${IS_APP}'"
253 # Is the current project an application (or part of it)?
254 if [ -z "${IS_APP}" ]
257 echo "$0: Project '${project}' is no application."
261 # Generate all sub-project names
262 EAR_APP_NAME="${IS_APP}"
263 CORE_APP_NAME="${IS_APP}-core"
264 EJB_APP_NAME="${IS_APP}-ejb"
265 LIB_APP_NAME="${IS_APP}-lib"
266 MAILER_EJB_APP_NAME="${IS_APP}-mailer-ejb"
267 MAILER_LIB_APP_NAME="${IS_APP}-mailer-lib"
268 SWING_APP_NAME="${IS_APP}-swing"
269 WAR_APP_NAME="${IS_APP}-war"
271 # It is an application, then run through all projects again
272 for APP_NAME in ${BASE_APPLICATION_NAMES}; do
273 echo "$0: project='${project}',APP_NAME='${APP_NAME}'"
275 # What project do we have?
276 if [ "${project}" = "${EAR_APP_NAME}" ]
278 # EAR (triangle symbol) project
279 PROJECT_APP_NAME="${APP_NAME}"
280 OWN_APP_NAME="${EAR_APP_NAME}"
281 elif [ "${project}" = "${CORE_APP_NAME}" ]
283 # Model library project
284 PROJECT_APP_NAME="${APP_NAME}-core"
285 OWN_APP_NAME="${CORE_APP_NAME}"
286 elif [ "${project}" = "${EJB_APP_NAME}" ]
288 # General EJB (bean symbol) project
289 PROJECT_APP_NAME="${APP_NAME}-ejb"
290 OWN_APP_NAME="${EJB_APP_NAME}"
291 elif [ "${project}" = "${LIB_APP_NAME}" ]
293 # General remote-interface project
294 PROJECT_APP_NAME="${APP_NAME}-lib"
295 OWN_APP_NAME="${LIB_APP_NAME}"
296 elif [ "${project}" = "${MAILER_EJB_APP_NAME}" ]
298 # Mailer EJB (bean symbol) project
299 PROJECT_APP_NAME="${APP_NAME}-mailer-ejb"
300 OWN_APP_NAME="${MAILER_EJB_APP_NAME}"
301 elif [ "${project}" = "${MAILER_LIB_APP_NAME}" ]
303 # Mailer remote-interface project
304 PROJECT_APP_NAME="${APP_NAME}-mailer-lib"
305 OWN_APP_NAME="${MAILER_LIB_APP_NAME}"
306 elif [ "${project}" = "${SWING_APP_NAME}" ]
309 PROJECT_APP_NAME="${APP_NAME}-swing"
310 OWN_APP_NAME="${SWING_APP_NAME}"
311 elif [ "${project}" = "${WAR_APP_NAME}" ]
313 # WAR (globe symbol) project
314 PROJECT_APP_NAME="${APP_NAME}-war"
315 OWN_APP_NAME="${WAR_APP_NAME}"
318 echo "$0: Project '${project}' is not supported. Please consider adding it."
323 LOCAL_APP_PATH="${JPROJECTS_HOME}/${PROJECT_APP_NAME}"
325 echo "$0: LOCAL_APP_PATH='${LOCAL_APP_PATH}',PROJECT_APP_NAME='${PROJECT_APP_NAME}'"
326 echo "$0: project='${project}',OWN_APP_NAME='${OWN_APP_NAME}'"
328 # Is same project name?
329 if [ "${OWN_APP_NAME}" != "${project}" ]
331 echo "$0: Not the right project: '${project}'<>'${OWN_APP_NAME}', skipping ..."
333 elif [ "${project}" = "${LOCAL_APP_PATH##*/}" ]
336 echo "$0: Not local-tracking same project '${project}'='${LOCAL_APP_PATH##*/}', skipping ..."
338 elif [ ! -d "${LOCAL_APP_PATH}" ]
340 # Other application's name does not exist
341 echo "$0: Application '${APP_NAME}' not found, skipping ..."
346 LOCAL_TRACKING="${APP_NAME}-local"
347 echo "$0: LOCAL_TRACKING='${LOCAL_TRACKING}'"
349 # Maybe a local-tracking needs to be setup?
350 LOCAL_TRACKING_SETUP=$(git remote | grep "${LOCAL_TRACKING}")
352 if [ -n "${LOCAL_TRACKING_SETUP}" ]
354 echo "$0: Local-tracking from '${project}' to '${LOCAL_APP_PATH##*/}' is already setup."
359 echo "$0: Setting up local-tracking (${LOCAL_TRACKING}) from '${project}' to '${LOCAL_APP_PATH##*/}' ..."
360 git remote add "${LOCAL_TRACKING}" "${LOCAL_APP_PATH}" || exit 255