blob: 2565e24bb97092b1e23119eb4e0b89787fb1f629 (
plain) (
blame)
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
|
#!/bin/sh
# Requires: coreutils, curl, jq, git
set -ue
usage () {
cat << EOF
usage: $(basename $0) [source-project] package [target-project]
EOF
exit 1
}
die () {
echo "$@" 1>&2
exit 2
}
[ $# -lt 2 ] && usage
OBS_LOGIN="$(osc who |cut -d: -f 1)"
# Do we have our own configuration for MYORG?
MYORG="$(git config --get --default '' obs.org)"
[ -z "${MYORG}" ] && MYORG="${OBS_LOGIN}"
if [ "$1" = "openSUSE:Factory" ] ; then
OUT=$(osc develproject "$1" "$2")
SRCPRJ="$(dirname "$OUT")"
PKG="$(basename "$OUT")"
else
SRCPRJ="$1"
PKG="$2"
fi
if [ $# -gt 2 ] ; then
if [ "$3" = "." ] ; then
TRGPRJ="$(basename "$(pwd -P)")"
else
TRGPRJ="$3"
fi
else
TRGPRJ="home:$OBS_LOGIN:branches:$SRCPRJ"
fi
# If we want to use full URL including the branch-fragment,
# we have to encode \# as %23.
SCM_URL="https://src.opensuse.org/${MYORG}/${PKG}"
if [ "x$(basename "$(pwd -P)")" != "x$TRGPRJ" ] ; then
if [ ! -d "$TRGPRJ" ] ; then
osc meta prj "$SRCPRJ" | sed -E -e 's/(<project name=")([^"]+)">/\1'"$TRGPRJ"'">/' \
| osc meta prj -F - "$TRGPRJ"
osc meta prjconf "$SRCPRJ" | osc meta prjconf -F - "$TRGPRJ"
fi
[ -d "$TRGPRJ" ] || osc co "$TRGPRJ"
cd "$TRGPRJ"
fi
# Put package into new project
osc api -X POST "/source/${SRCPRJ}/${PKG}?cmd=fork&scmsync=${SCM_URL}&target_project=${TRGPRJ}&target_package=${PKG}"
osc up
cd "$PKG"
# Final cleanup
if [ -f _scmsync.obsinfo ] ; then
echo '_scmsync.obsinfo' >> .git/info/exclude
rm -f _scmsync.obsinfo
git add -A .
git commit -a -m 'Remove _scmsync.obsinfo'
fi
# Set config
git config "lfs.$(git remote get-url origin)/info/lfs.locksverify" true
|