-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcommit-utils.sh
More file actions
73 lines (62 loc) · 1.17 KB
/
commit-utils.sh
File metadata and controls
73 lines (62 loc) · 1.17 KB
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
get_change_id() {
awk '/^Change-Id:/ {print $2; exit}'
}
get_git_change_id() {
COMMIT="$1"
git log -1 --format=%B "$COMMIT" | get_change_id
}
remove_change_id_from_file() {
local FILE="$1"
sed -i '/^Change-Id:/d' "$FILE"
}
insert_after_separator() {
local FILE="$1"
local CONTENT="$2"
UPDATED=$(awk -v CONTENT="$CONTENT" '
/^---$/ && !done {
print $0
print ""
print CONTENT
print ""
done=1
next
}
{ print }
' "$FILE")
printf '%s' "$UPDATED" >"$FILE"
}
parse_commitish() {
local -n _COMMITS=$1
shift
_COMMITS=()
local COMMITISH
for COMMITISH in "$@"; do
if [[ "$COMMITISH" == *..* ]]; then
while IFS= read -r COMMIT; do
_COMMITS+=("$COMMIT")
done < <(git rev-list --reverse "$COMMITISH")
else
while IFS= read -r COMMIT; do
_COMMITS+=("$COMMIT")
done < <(git rev-list --no-walk "$COMMITISH")
fi
done
}
has_patches() {
local ARG
for ARG in "$@"; do
if [[ "$ARG" == *.patch ]]; then
return 0
fi
done
return 1
}
extract_patches_modified_files() {
local ARG
for ARG in "$@"; do
git apply --numstat "$ARG" 2>/dev/null | awk '{print $3}'
done
}
extract_commits_modified_files() {
git diff --name-only "$@"
}