Skip to content

Commit faea64e

Browse files
feat: incremental merge of share-filter branch changes (#3879)
1 parent 2061436 commit faea64e

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

strip-coauthor.sh

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/bin/bash
2+
3+
# Strip Co-authored-by lines from commits authored by current user on current branch
4+
# Excludes merge commits and commits from other authors
5+
6+
set -e
7+
8+
# Get current branch and user info
9+
CURRENT_BRANCH=$(git branch --show-current)
10+
USER_NAME=$(git config user.name)
11+
USER_EMAIL=$(git config user.email)
12+
13+
echo "Current branch: $CURRENT_BRANCH"
14+
echo "User: $USER_NAME <$USER_EMAIL>"
15+
echo ""
16+
17+
# Get commits by current user on current branch (excluding merges)
18+
COMMITS=$(git log --format="%H" --author="$USER_NAME" --no-merges $CURRENT_BRANCH ^main)
19+
20+
if [ -z "$COMMITS" ]; then
21+
echo "No commits by $USER_NAME found on branch $CURRENT_BRANCH"
22+
exit 0
23+
fi
24+
25+
echo "Found commits by $USER_NAME on $CURRENT_BRANCH:"
26+
git log --oneline --author="$USER_NAME" --no-merges $CURRENT_BRANCH ^main
27+
echo ""
28+
29+
# Check if any commits have Co-authored-by lines
30+
HAS_COAUTHOR=false
31+
for commit in $COMMITS; do
32+
if git show --format="%B" -s "$commit" | grep -q "^Co-authored-by:"; then
33+
HAS_COAUTHOR=true
34+
break
35+
fi
36+
done
37+
38+
if [ "$HAS_COAUTHOR" = false ]; then
39+
echo "No Co-authored-by lines found in your commits on this branch."
40+
exit 0
41+
fi
42+
43+
echo "Found Co-authored-by lines in some commits. Proceeding with cleanup..."
44+
echo ""
45+
46+
# Create a backup branch
47+
BACKUP_BRANCH="${CURRENT_BRANCH}-backup-$(date +%s)"
48+
git branch "$BACKUP_BRANCH"
49+
echo "Created backup branch: $BACKUP_BRANCH"
50+
echo ""
51+
52+
# Process commits in reverse order (oldest first)
53+
COMMITS_REVERSE=$(echo "$COMMITS" | tac)
54+
55+
for commit in $COMMITS_REVERSE; do
56+
# Get the commit message
57+
COMMIT_MSG=$(git show --format="%B" -s "$commit")
58+
59+
# Check if this commit has Co-authored-by lines
60+
if echo "$COMMIT_MSG" | grep -q "^Co-authored-by:"; then
61+
echo "Processing commit: $(git show --format="%h %s" -s "$commit")"
62+
63+
# Remove Co-authored-by lines from commit message
64+
CLEAN_MSG=$(echo "$COMMIT_MSG" | grep -v "^Co-authored-by:" | sed '/^$/N;/^\n$/d')
65+
66+
# Amend the commit with clean message
67+
git commit --amend --no-edit --message="$CLEAN_MSG" --quiet
68+
69+
echo " ✓ Removed Co-authored-by lines"
70+
fi
71+
done
72+
73+
echo ""
74+
echo "✅ Successfully stripped Co-authored-by lines from your commits on $CURRENT_BRANCH"
75+
echo "📦 Backup created at: $BACKUP_BRANCH"
76+
echo ""
77+
echo "To restore if needed: git reset --hard $BACKUP_BRANCH"
78+
echo "To delete backup: git branch -D $BACKUP_BRANCH"

0 commit comments

Comments
 (0)