diff options
| -rwxr-xr-x | reposync | 24 |
1 files changed, 19 insertions, 5 deletions
@@ -40,13 +40,27 @@ syncrepo() { if [ ! -d "$path/.git" ]; then log "=> Cloning repo into $path..." - run_cmd "mkdir -p \"$path\"" - run_cmd "git clone --branch \"$branch\" --single-branch \"$url\" \"$path\"" + if [ "$DRY_RUN" ]; then + log " [dry-run] mkdir -p \"$path\" && git clone --quiet --branch \"$branch\" --single-branch \"$url\" \"$path\"" + else + mkdir -p "$path" + git clone --quiet --branch "$branch" --single-branch "$url" "$path" + fi else log "=> Updating repo $path..." - run_cmd "cd \"$path\" && git fetch origin \"$branch\"" - run_cmd "cd \"$path\" && git reset --hard \"origin/$branch\"" - run_cmd "cd \"$path\" && git clean -fdx" + old_head=$(cd "$path" && git rev-parse HEAD 2>/dev/null) || true + if [ "$DRY_RUN" ]; then + log " [dry-run] git fetch --quiet origin $branch && git reset --quiet --hard origin/$branch && git clean -q -fdx" + else + cd "$path" && git fetch --quiet origin "$branch" + cd "$path" && git reset --quiet --hard "origin/$branch" + cd "$path" && git clean -q -fdx + fi + new_head=$(cd "$path" && git rev-parse HEAD 2>/dev/null) || true + if [ "$old_head" ] && [ "$new_head" ] && [ "$old_head" != "$new_head" ]; then + log "=> Changed files:" + cd "$path" && git --no-pager diff --stat "$old_head" "$new_head" 2>/dev/null || true + fi fi } |