mirror of
https://github.com/danbulant/notes
synced 2026-05-19 04:18:49 +00:00
58 lines
No EOL
1.7 KiB
Bash
58 lines
No EOL
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# we'll write all git versions of the file to this folder:
|
|
EXPORT_TO=./tmp/data
|
|
|
|
# take relative path to the file to inspect
|
|
GIT_PATH_TO_FILE=./notes/.obsidian/plugins/obsidian-activity-history/data.json
|
|
|
|
# ---------------- don't edit below this line --------------
|
|
|
|
USAGE="Please cd to the root of your git proj and specify path to file you with to inspect (example: $0 some/path/to/file)"
|
|
|
|
# check if got argument
|
|
if [ "${GIT_PATH_TO_FILE}" == "" ]; then
|
|
echo "error: no arguments given. ${USAGE}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# check if file exist
|
|
if [ ! -f ${GIT_PATH_TO_FILE} ]; then
|
|
echo "error: File '${GIT_PATH_TO_FILE}' does not exist. ${USAGE}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# extract just a filename from given relative path (will be used in result file names)
|
|
GIT_SHORT_FILENAME=$(basename $GIT_PATH_TO_FILE)
|
|
|
|
# create folder to store all revisions of the file
|
|
if [ ! -d ${EXPORT_TO} ]; then
|
|
echo "creating folder: ${EXPORT_TO}"
|
|
mkdir ${EXPORT_TO}
|
|
fi
|
|
|
|
## uncomment next line to clear export folder each time you run script
|
|
#rm ${EXPORT_TO}/*
|
|
|
|
# reset coutner
|
|
COUNT=0
|
|
|
|
# iterate all revisions
|
|
git rev-list --all --objects -- ${GIT_PATH_TO_FILE} | \
|
|
cut -d ' ' -f1 | \
|
|
while read h; do \
|
|
COUNT=$((COUNT + 1)); \
|
|
COUNT_PRETTY=$(printf "%04d" $COUNT); \
|
|
COMMIT_DATE=`git show $h | head -3 | grep 'Date:' | awk '{print $4"-"$3"-"$6}'`; \
|
|
if [ "${COMMIT_DATE}" != "" ]; then \
|
|
git cat-file -p ${h}:${GIT_PATH_TO_FILE} > ${EXPORT_TO}/${COUNT_PRETTY}.${COMMIT_DATE}.${h}.${GIT_SHORT_FILENAME};\
|
|
fi;\
|
|
done
|
|
|
|
echo "result stored to ${EXPORT_TO}"
|
|
|
|
node ./fixdata > notes/.obsidian/plugins/obsidian-activity-history/data.json
|
|
rm ${EXPORT_TO} -r
|
|
|
|
echo "done"
|
|
exit 0 |