create_p4_filelist.sh #1

  • //
  • guest/
  • russell_jackson/
  • sdp/
  • Maintenance/
  • create_p4_filelist.sh
  • View
  • Commits
  • Open Download .zip Download (1 KB)
#!/usr/bin/env bash
#
# list_p4_files.sh
#
# Generates a combined file list from all Perforce depots.
# Iterates only one directory level deep to avoid memory spikes.

set -uo pipefail

OUTPUT_FILE="p4_file_list.txt"
TEMP_DIR=$(mktemp -d)

echo "Collecting Perforce file list. Temporary directory: $TEMP_DIR"
> "$OUTPUT_FILE"

###############################################
# 1. Get list of depots
###############################################
echo "Fetching depot list..."
depots=$(p4 -ztag -F %name% depots)

###############################################
# 2. For each depot, list top-level directories
###############################################
for depot in $depots; do
    echo "Processing depot: $depot"

    # Example depot name: //depot
    depot_path="//${depot}"

    # Get top-level directories under the depot
    # Example output: //depot/foo/ //depot/bar/
    toplevel_dirs=$(p4 -ztag dirs "${depot_path}/*" 2>/dev/null | awk '{print $3}')

    for dir in $toplevel_dirs; do
        echo "  Scanning: $dir"

        temp_file="$TEMP_DIR/$(echo "$dir" | sed 's/[^a-zA-Z0-9]/_/g').txt"

        p4 -ztag -F %depotFile% files "$dir/..." > "$temp_file"

        cat "$temp_file" >> "$OUTPUT_FILE"
    done
done

echo "Final combined list written to: $OUTPUT_FILE"
echo "Cleaning up..."
rm -rf "$TEMP_DIR"

echo "Done."
# Change User Description Committed
#1 32238 Russell C. Jackson (Rusty) New p4review.py and a script to create a list of all the files in a large server.