Page MenuHomeFreeBSD

D47289.id145779.diff
No OneTemporary

D47289.id145779.diff

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__
@@ -183,6 +191,12 @@
esac
}
+# 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
@@ -236,12 +250,11 @@
err "invalid diff ID $diff"
fi
- tmp=$(mktemp)
+ tmp=$(xmktemp)
echo '{"names":["'"$diff"'"]}' |
arc_call_conduit -- phid.lookup > "$tmp"
phid=$(jq -r ".response[].phid" "$tmp")
if [ -z "$phid" ] || [ "$phid" = "null" ]; then
- rm -f "$tmp"
err "invalid Phabricator ID for ${diff}"
fi
@@ -255,7 +268,6 @@
summary=$(jq -r "select(.response != []) |
.response.${diff}.fullName" < "$tmp")
printf "${term_color}%-15s\033[0m %s\n" "${status_name}" "${summary}"
- rm -f "$tmp"
}
log2diff()
@@ -328,7 +340,7 @@
return 1
fi
- msg=$(mktemp)
+ msg=$(xmktemp)
git show -s --format='%B' "$commit" > "$msg"
printf "\nTest Plan:\n" >> "$msg"
printf "\nReviewers:\n" >> "$msg"
@@ -357,7 +369,6 @@
]}' |
arc_call_conduit -- differential.revision.edit >&3
fi
- rm -f "$msg"
return 0
}
@@ -377,7 +388,7 @@
jq '.response.data[0].attachments.reviewers.reviewers[] | select(.status == "accepted").reviewerPHID')
if [ -n "$userids" ]; then
echo '{
- "constraints": {"phids": ['"$(printf "%s" "$userids" | tr '[:space:]' ',')"']}
+ "constraints": {"phids": ['"$(echo "$userids" | tr '[:blank:]' ',')"']}
}' |
arc_call_conduit -- user.search |
jq -r '.response.data[].fields.username'
@@ -591,31 +602,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"
@@ -632,7 +642,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
@@ -640,12 +649,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
@@ -654,7 +662,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()
@@ -714,7 +721,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")
@@ -875,4 +882,7 @@
BROWSE=--browse
fi
+GITARC_TMPDIR=$(mktemp -d) || exit 1
+trap cleanup EXIT HUP INT QUIT TRAP USR1 TERM
+
gitarc__"${verb}" "$@"

File Metadata

Mime Type
text/plain
Expires
Mon, Aug 17, 2:31 PM (17 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36857884
Default Alt Text
D47289.id145779.diff (5 KB)

Event Timeline