Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 269491 | Differences between
and this patch

Collapse All | Expand All

(-)/usr/portage/eclass/git.eclass (-31 / +26 lines)
Lines 47-58 Link Here
47
# @ECLASS-VARIABLE: EGIT_FETCH_CMD
47
# @ECLASS-VARIABLE: EGIT_FETCH_CMD
48
# @DESCRIPTION:
48
# @DESCRIPTION:
49
# Command for cloning the repository.
49
# Command for cloning the repository.
50
: ${EGIT_FETCH_CMD:="git clone --bare"}
50
: ${EGIT_FETCH_CMD:="git clone"}
51
51
52
# @ECLASS-VARIABLE: EGIT_UPDATE_CMD
52
# @ECLASS-VARIABLE: EGIT_UPDATE_CMD
53
# @DESCRIPTION:
53
# @DESCRIPTION:
54
# Git fetch command.
54
# Git fetch command.
55
EGIT_UPDATE_CMD="git fetch -f -u"
55
EGIT_UPDATE_CMD="git pull"
56
56
57
# @ECLASS-VARIABLE: EGIT_DIFFSTAT_CMD
57
# @ECLASS-VARIABLE: EGIT_DIFFSTAT_CMD
58
# @DESCRIPTION:
58
# @DESCRIPTION:
Lines 145-150 Link Here
145
# @FUNCTION: git_fetch
145
# @FUNCTION: git_fetch
146
# @DESCRIPTION:
146
# @DESCRIPTION:
147
# Gets repository from EGIT_REPO_URI and store it in specified EGIT_STORE_DIR
147
# Gets repository from EGIT_REPO_URI and store it in specified EGIT_STORE_DIR
148
149
git_modules() {
150
	einfo "git submodule init"
151
	git submodule init
152
	einfo "git submodule update"
153
	git submodule update
154
}
155
148
git_fetch() {
156
git_fetch() {
149
	debug-print-function ${FUNCNAME} "$@"
157
	debug-print-function ${FUNCNAME} "$@"
150
158
Lines 192-223 Link Here
192
	addwrite "${EGIT_STORE_DIR}"
200
	addwrite "${EGIT_STORE_DIR}"
193
201
194
	[[ -z ${EGIT_REPO_URI##*/} ]] && EGIT_REPO_URI="${EGIT_REPO_URI%/}"
202
	[[ -z ${EGIT_REPO_URI##*/} ]] && EGIT_REPO_URI="${EGIT_REPO_URI%/}"
195
	EGIT_CLONE_DIR="${EGIT_PROJECT}"
203
	EGIT_CLONE_DIR="${PN}"
196
204
197
	debug-print "${FUNCNAME}: EGIT_OPTIONS = \"${EGIT_OPTIONS}\""
205
	debug-print "${FUNCNAME}: EGIT_OPTIONS = \"${EGIT_OPTIONS}\""
198
206
199
	export GIT_DIR="${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}"
207
	# we also have to remove all shallow and bare copied repositories
200
201
	# we also have to remove all shallow copied repositories
202
	# and fetch them again
208
	# and fetch them again
203
	if [[ -e "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}/shallow" ]]; then
209
	if [[ -e "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}/shallow" ]]; then
204
		rm -rf "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}"
210
		rm -rf "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}"
205
		einfo "The ${EGIT_CLONE_DIR} was shallow copy. Refetching."
211
		einfo "The ${EGIT_CLONE_DIR} was shallow copy. Refetching."
206
	fi
212
	fi
213
	[[ -d "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}/.git" ]]||\
214
		(rm -rf "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}"
215
		einfo "The ${EGIT_CLONE_DIR} was bare copy or not a git repository. Refetching.")
207
216
208
	if [[ ! -d ${EGIT_CLONE_DIR} ]] ; then
217
	if [[ ! -d ${EGIT_CLONE_DIR} ]] ; then
209
		# first clone
218
		# first clone
210
		${elogcmd} "GIT NEW clone -->"
219
		${elogcmd} "GIT NEW clone -->"
211
		${elogcmd} "   repository: 		${EGIT_REPO_URI}"
220
		${elogcmd} "   repository: 		${EGIT_REPO_URI}"
212
221
		einfo "${EGIT_FETCH_CMD} ${EGIT_OPTIONS} ${EGIT_REPO_URI} ${EGIT_CLONE_DIR}"
213
		${EGIT_FETCH_CMD} ${EGIT_OPTIONS} "${EGIT_REPO_URI}" ${EGIT_PROJECT} \
222
		${EGIT_FETCH_CMD} ${EGIT_OPTIONS} "${EGIT_REPO_URI}" ${EGIT_CLONE_DIR} \
214
			|| die "${EGIT}: can't fetch from ${EGIT_REPO_URI}."
223
			|| die "${EGIT}: can't fetch from ${EGIT_REPO_URI}."
215
224
225
		cd ${EGIT_CLONE_DIR}
216
		cursha1=$(git rev-parse ${EGIT_BRANCH})
226
		cursha1=$(git rev-parse ${EGIT_BRANCH})
227
228
		git_modules
229
217
		${elogcmd} "   at the commit:		${cursha1}"
230
		${elogcmd} "   at the commit:		${cursha1}"
218
		# We use --bare cloning, so git doesn't do this for us.
219
		git config remote.origin.url "${EGIT_REPO_URI}"
220
	elif [[ -n ${EGIT_OFFLINE} ]] ; then
231
	elif [[ -n ${EGIT_OFFLINE} ]] ; then
232
		cd ${EGIT_CLONE_DIR}
221
		cursha1=$(git rev-parse ${EGIT_BRANCH})
233
		cursha1=$(git rev-parse ${EGIT_BRANCH})
222
		${elogcmd} "GIT offline update -->"
234
		${elogcmd} "GIT offline update -->"
223
		${elogcmd} "   repository: 		${EGIT_REPO_URI}"
235
		${elogcmd} "   repository: 		${EGIT_REPO_URI}"
Lines 230-241 Link Here
230
		${elogcmd} "GIT update -->"
242
		${elogcmd} "GIT update -->"
231
		${elogcmd} "   repository: 		${EGIT_REPO_URI}"
243
		${elogcmd} "   repository: 		${EGIT_REPO_URI}"
232
244
245
		cd ${EGIT_CLONE_DIR}
233
		oldsha1=$(git rev-parse ${EGIT_BRANCH})
246
		oldsha1=$(git rev-parse ${EGIT_BRANCH})
234
247
235
		${elogcmd} ${EGIT_UPDATE_CMD} ${EGIT_OPTIONS} origin ${EGIT_BRANCH}:${EGIT_BRANCH}
248
		${elogcmd} ${EGIT_UPDATE_CMD} ${EGIT_OPTIONS} origin ${EGIT_BRANCH}:${EGIT_BRANCH}
236
		${EGIT_UPDATE_CMD} ${EGIT_OPTIONS} origin ${EGIT_BRANCH}:${EGIT_BRANCH} \
249
		${EGIT_UPDATE_CMD} ${EGIT_OPTIONS} origin ${EGIT_BRANCH}:${EGIT_BRANCH} \
237
			|| die "${EGIT}: can't update from ${EGIT_REPO_URI}."
250
			|| die "${EGIT}: can't update from ${EGIT_REPO_URI}."
238
251
252
		git_modules
253
239
		cursha1=$(git rev-parse ${EGIT_BRANCH})
254
		cursha1=$(git rev-parse ${EGIT_BRANCH})
240
255
241
		# write out message based on the revisions
256
		# write out message based on the revisions
Lines 272-298 Link Here
272
	${elogcmd} "   storage directory: 	\"${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}\""
287
	${elogcmd} "   storage directory: 	\"${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}\""
273
288
274
	# unpack to the ${S}
289
	# unpack to the ${S}
275
	unset GIT_DIR
290
	rsync -rlpgo "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}/" "${S}/" || die "${ESVN}: can't export to ${S}."
276
	debug-print "git clone -l -s -n \"${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}\" \"${S}\""
277
	git clone -l -s -n "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}" "${S}"
278
279
	# set correct branch and the tree ebuild specified
280
	pushd "${S}" > /dev/null
281
	local branchname=branch-${EGIT_BRANCH} src=origin/${EGIT_BRANCH}
282
	if [[ ${EGIT_TREE} != ${EGIT_BRANCH} ]]; then
283
		branchname=tree-${EGIT_TREE}
284
		src=${EGIT_TREE}
285
	fi
286
	debug-print "git checkout -b ${branchname} ${src}"
287
	git checkout -b ${branchname} ${src} 2>&1 > /dev/null
288
	debug-print "git submodule init"
289
	git submodule init 2>&1 > /dev/null
290
	debug-print "git submodule update"
291
	git submodule update 2>&1 > /dev/null
292
	popd > /dev/null
293
294
	unset branchname src
295
296
	echo ">>> Unpacked to ${S}"
291
	echo ">>> Unpacked to ${S}"
297
}
292
}
298
293

Return to bug 269491