Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F160061413
D47289.id146034.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D47289.id146034.diff
View Options
diff --git a/tools/tools/git/git-arc.sh b/tools/tools/git/git-arc.sh
--- a/tools/tools/git/git-arc.sh
+++ b/tools/tools/git/git-arc.sh
@@ -43,6 +43,14 @@
exit 1
}
+cleanup()
+{
+ rc=$?
+ rm -fr "$GITARC_TMPDIR"
+ trap - EXIT
+ exit $rc
+}
+
err_usage()
{
cat >&2 <<__EOF__
@@ -147,6 +155,12 @@
exit 1
}
+# Use xmktemp instead of mktemp when creating temporary files.
+xmktemp()
+{
+ mktemp "${GITARC_TMPDIR:?}/tmp.XXXXXXXXXX" || exit 1
+}
+
#
# Fetch the value of a boolean config variable ($1) and return true
# (0) if the variable is true. The default value to use if the
@@ -200,7 +214,7 @@
err "invalid diff ID $diff"
fi
- tmp=$(mktemp)
+ tmp=$(xmktemp)
echo '{"names":["'"$diff"'"]}' |
arc_call_conduit -- phid.lookup > "$tmp"
status=$(jq -r "select(.response != []) | .response.${diff}.status" < "$tmp")
@@ -279,7 +293,7 @@
return 1
fi
- msg=$(mktemp)
+ msg=$(xmktemp)
git show -s --format='%B' "$commit" > "$msg"
printf "\nTest Plan:\n" >> "$msg"
printf "\nReviewers:\n" >> "$msg"
@@ -308,7 +322,6 @@
]}' |
arc_call_conduit -- differential.revision.edit >&3
fi
- rm -f "$msg"
return 0
}
@@ -542,31 +555,30 @@
patch_commit()
{
- local diff reviewid review_data authorid user_data user_addr user_name author
- local tmp author_addr author_name
+ local diff reviewid review_data authorid user_data user_addr user_name
+ local diff_data author_addr author_name author tmp
diff=$1
reviewid=$(diff2phid "$diff")
# Get the author phid for this patch
- review_data=$(mktemp)
+ review_data=$(xmktemp)
echo '{"constraints": {"phids": ["'"$reviewid"'"]}}' | \
arc_call_conduit -- differential.revision.search > "$review_data"
authorid=$(jq -r '.response.data[].fields.authorPHID' "$review_data")
# Get metadata about the user that submitted this patch
- user_data=$(mktemp)
+ user_data=$(xmktemp)
echo '{"constraints": {"phids": ["'"$authorid"'"]}}' | \
arc_call_conduit -- user.search | \
jq -r '.response.data[].fields' > "$user_data"
user_addr=$(jq -r '.username' "$user_data")
user_name=$(jq -r '.realName' "$user_data")
- rm "$user_data"
# Dig the data out of querydiffs api endpoint, although it's deprecated,
# since it's one of the few places we can get email addresses. It's unclear
# if we can expect multiple difference ones of these. Some records don't
# have this data, so we remove all the 'null's. We sort the results and
# remove duplicates 'just to be sure' since we've not seen multiple
# records that match.
- diff_data=$(mktemp)
+ diff_data=$(xmktemp)
echo '{"revisionIDs": [ '"${diff#D}"' ]}' | \
arc_call_conduit -- differential.querydiffs |
jq -r '.response | flatten | .[]' > "$diff_data"
@@ -583,7 +595,6 @@
fi
author=$(find_author "$user_addr" "$user_name" "$author_addr" "$author_name")
- rm "$diff_data"
# If we had to guess, and the user didn't want to guess, abort
if [ "${author}" = "ABORT" ]; then
@@ -591,12 +602,11 @@
exit 1
fi
- tmp=$(mktemp)
- jq -r '.response.data[].fields.title' "$review_data" > $tmp
- echo >> $tmp
- jq -r '.response.data[].fields.summary' "$review_data" >> $tmp
- echo >> $tmp
- rm "$review_data"
+ tmp=$(xmktemp)
+ jq -r '.response.data[].fields.title' "$review_data" > "$tmp"
+ echo >> "$tmp"
+ jq -r '.response.data[].fields.summary' "$review_data" >> "$tmp"
+ echo >> "$tmp"
# XXX this leaves an extra newline in some cases.
reviewers=$(diff2reviewers "$diff" | sed '/^$/d' | paste -sd ',' - | sed 's/,/, /g')
if [ -n "$reviewers" ]; then
@@ -605,7 +615,6 @@
# XXX TODO refactor with gitarc__stage maybe?
printf "Differential Revision:\thttps://reviews.freebsd.org/%s\n" "${diff}" >> "$tmp"
git commit --author "${author}" --file "$tmp"
- rm "$tmp"
}
gitarc__patch()
@@ -665,7 +674,7 @@
git checkout -q -b "${branch}" main
fi
- tmp=$(mktemp)
+ tmp=$(xmktemp)
for commit in $commits; do
git show -s --format=%B "$commit" > "$tmp"
title=$(git show -s --format=%s "$commit")
@@ -826,4 +835,7 @@
BROWSE=--browse
fi
+GITARC_TMPDIR=$(mktemp -d) || exit 1
+trap cleanup EXIT HUP INT QUIT TRAP USR1 TERM
+
gitarc__"${verb}" "$@"
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jun 22, 12:16 AM (19 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34169309
Default Alt Text
D47289.id146034.diff (4 KB)
Attached To
Mode
D47289: git-arc: Trap on every mktemp
Attached
Detach File
Event Timeline
Log In to Comment