blob: b8cbf0acb27db750da919e4db8beefac80019907 (
plain)
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
110
111
112
113
114
115
116
117
118
119
120
121
122
|
#!/bin/bash
set -e
pdiff () {
local one="$1";
local two="$2";
local pipe="$3";
shift 3;
diff "$@" <(
cat "$one" \
| bash -c "$pipe"
) <(
cat "$two" \
| bash -c "$pipe"
)
}
unset commit_message
if [ $# -eq 1 ]; then
if [ "x$1" = 'x-a' ]; then
commit_message=$(
unset pkgname pkgbase epoch pkgver pkgrel
eval "$(
git archive HEAD -- PKGBUILD \
| tar -Ox \
| grep '^\(pkgname\|pkgbase\|epoch\|pkgver\|pkgrel\)=[^(]\+$'
)"
printf '%s: %s%s-%s -> ' \
"${pkgbase}${pkgbase:-${pkgname}}" \
"${epoch:+${epoch}:}" \
"${pkgver}" \
"${pkgrel}"
unset epoch pkgver pkgrel
eval "$(
grep '^\(epoch\|pkgver\|pkgrel\)=' PKGBUILD
)"
printf '%s%s-%s' \
"${epoch:+${epoch}:}" \
"${pkgver}" \
"${pkgrel}"
)
else
commit_message="$1"
fi
elif [ $# -ne 0 ]; then
>&2 echo 'usage: commit-package [commit-message]'
>&2 echo ' without a commit message, it will only be added for commit'
exit 1
fi
if [ -d '.git' ] || [ -f '.git' ]; then
if ! git remote \
| grep -qxF aur \
|| ! git remote \
| grep -qxF ecknernet; then
>&2 echo 'I cannot find the necessary remotes: aur and ecknernet'
exit 1
fi
if ! git branch --format='%(refname:lstrip=-1)' \
| grep -qxF master \
|| ! git branch --format='%(refname:lstrip=-1)' \
| grep -qxF archlinuxewe; then
>&2 echo 'I cannot find the necessary branches: master and archlinuxewe'
exit 1
fi
if ! git merge-base --is-ancestor master archlinuxewe; then
>&2 echo 'master is not an ancestor of archlinuxewe'
exit 1
fi
git checkout archlinuxewe
git pull ecknernet --ff-only
makepkg --printsrcinfo > .SRCINFO
git commit 'PKGBUILD' '.SRCINFO' -m "${commit_message:-rebuild}"
git checkout master
git pull --ff-only
diff=$(
git diff archlinuxewe{^,} --name-status \
| cut -f2 \
| grep -vxF .SRCINFO \
| grep -vxF PKGBUILD \
| xargs -r git diff archlinuxewe{^,} --
)
if [ -n "${diff}" ]; then
printf '%s\n' "${diff}" \
| git apply
fi
pdiff <(
git archive archlinuxewe^ -- PKGBUILD
) <(
git archive archlinuxewe -- PKGBUILD
) '
tar -Ox \
| sed "
/^_pinned_dependencies=(/,/)/d
"
' -u \
| sed '
s@^\(---\|+++\) /dev/fd/\S\+\s\+@\1 a/PKGBUILD @
' \
| git apply
makepkg --printsrcinfo > .SRCINFO
git commit 'PKGBUILD' '.SRCINFO' -m "${commit_message:-rebuild}"
git push aur
git push ecknernet
git checkout archlinuxewe
git rebase master
git push ecknernet --force
paket=$(basename "$(pwd)")
cd ..
if [ -n "${commit_message}" ]; then
git commit "${paket}" -m "${commit_message}"
else
git add "${paket}"
fi
else
if [ -n "${commit_message}" ]; then
git commit 'PKGBUILD' -m "${commit_message}"
else
git add 'PKGBUILD'
fi
fi
|