more refinement
This commit is contained in:
BIN
scripts/hcf/._package_repo_changes
Executable file
BIN
scripts/hcf/._package_repo_changes
Executable file
Binary file not shown.
61
scripts/hcf/package_repo_changes
Executable file
61
scripts/hcf/package_repo_changes
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to package all git changes and untracked files into a single archive
|
||||
#
|
||||
# ./package_repo_changes [ARCHIVE_NAME]
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
cleanup() {
|
||||
local exit_code=$?
|
||||
echo "Cleaning up temporary files..."
|
||||
[[ -d "${TEMP_DIR:-}" ]] && rm -rf "$TEMP_DIR"
|
||||
exit $exit_code
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
# Get the repository root directory
|
||||
REPO_DIR=$(git rev-parse --show-toplevel)
|
||||
cd "$REPO_DIR"
|
||||
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
echo "Creating temporary directory: $TEMP_DIR"
|
||||
|
||||
# Check if there are any changes to package
|
||||
if git diff --quiet && [[ -z "$(git ls-files --others --exclude-standard)" ]]; then
|
||||
echo "No changes detected in the repository. Nothing to package."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Generating patch file for tracked changes..."
|
||||
git diff >"$TEMP_DIR/changes.patch"
|
||||
|
||||
# Include staged changes as well
|
||||
if ! git diff --staged --quiet; then
|
||||
echo "Including staged changes..."
|
||||
git diff --staged >>"$TEMP_DIR/changes.patch"
|
||||
fi
|
||||
|
||||
echo "Packaging untracked files..."
|
||||
git ls-files --others --exclude-standard >"$TEMP_DIR/untracked_files.txt"
|
||||
|
||||
if [[ -s "$TEMP_DIR/untracked_files.txt" ]]; then
|
||||
tar -czf "$TEMP_DIR/untracked.tar.gz" -T "$TEMP_DIR/untracked_files.txt"
|
||||
echo "Untracked files packaged successfully."
|
||||
else
|
||||
echo "No untracked files found."
|
||||
touch "$TEMP_DIR/untracked.tar.gz"
|
||||
fi
|
||||
|
||||
# Allow custom archive name with default fallback
|
||||
ARCHIVE_NAME=${1:-"changes_$(date +%Y%m%d_%H%M%S).tar.gz"}
|
||||
echo "Creating final archive: $ARCHIVE_NAME"
|
||||
tar -czf "$ARCHIVE_NAME" -C "$TEMP_DIR" changes.patch untracked.tar.gz
|
||||
|
||||
echo "Archive created successfully at: $REPO_DIR/$ARCHIVE_NAME"
|
||||
echo ""
|
||||
echo "To apply these changes elsewhere:"
|
||||
echo "1. Extract the archive: tar -xzf $ARCHIVE_NAME"
|
||||
echo "2. Apply the patch: git apply changes.patch"
|
||||
echo "3. Extract untracked files: tar -xzf untracked.tar.gz"
|
||||
Reference in New Issue
Block a user