mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 10:00:11 -08:00
4.1 KiB
4.1 KiB
Alias File Tracking Cleanup
Overview
The cleanup-alias-tracking.sh script is designed to clean up the git repository on systems where dotfiles/my-aliases.zsh was previously tracked but should now be treated as a dynamically generated file.
Problem Context
Originally, my-aliases.zsh was tracked in git, but this caused conflicts when the bootstrap process tried to update it with system-specific aliases. The file is now:
- Generated dynamically from
my-aliases.zsh.originaltemplate - Customized per system (debian vs ubuntu vs fedora)
- Should not be tracked in git to prevent conflicts
What This Script Does
- Removes git tracking of
dotfiles/my-aliases.zsh - Updates .gitignore to ignore the file
- Commits the changes with a descriptive message
- Verifies the cleanup was successful
- Provides next steps for pushing and regenerating aliases
Usage
On Each System You Manage
# Navigate to your shell repository
cd ~/shell
# Run the cleanup script
./cleanup-alias-tracking.sh
What You'll See
The script will:
- Show current git status
- Check if the file is currently tracked
- Check if .gitignore already has the entry
- Ask for confirmation before making changes
- Perform the cleanup
- Verify the results
Example Output
=== Alias File Tracking Cleanup Script ===
This script will remove my-aliases.zsh from git tracking
and update .gitignore to prevent future conflicts.
=== Current Git Status ===
M dotfiles/my-aliases.zsh
my-aliases.zsh is currently tracked by git
.gitignore needs to be updated
Actions that will be performed:
1. Remove dotfiles/my-aliases.zsh from git tracking
2. Add dotfiles/my-aliases.zsh to .gitignore
3. Commit the changes
Continue? (y/N): y
=== Removing my-aliases.zsh from git tracking ===
✓ Removed dotfiles/my-aliases.zsh from git tracking
=== Updating .gitignore ===
✓ Added new Generated dotfiles section to .gitignore
=== Committing changes ===
✓ Changes committed successfully
=== Verification ===
✓ dotfiles/my-aliases.zsh is no longer tracked
✓ .gitignore contains entry for dotfiles/my-aliases.zsh
=== Final Git Status ===
(clean working directory)
=== Cleanup Complete! ===
After Running the Script
-
Push the changes to your repository:
git push origin main -
Regenerate the aliases on the system:
# Run setup to regenerate aliases from template ~/shell/setup/setup.sh -
Verify aliases work:
# Source your shell config or start a new terminal source ~/.zshrc # Test aliases ll # Should work if aliases were generated correctly
Safety Features
- Confirmation prompt before making any changes
- Git status checks to show what will be affected
- Verification steps to ensure cleanup was successful
- No data loss - the script only removes tracking, not the actual file
- Idempotent - safe to run multiple times
Troubleshooting
Script Says "No changes needed"
This means the cleanup was already done on this system. You can verify by checking:
git ls-files | grep my-aliases.zsh # Should return nothing
grep "my-aliases.zsh" .gitignore # Should show the ignore entry
File Still Shows as Modified
If my-aliases.zsh still shows as modified after cleanup:
- This is normal - the file exists locally but is now ignored
- Delete the local file:
rm dotfiles/my-aliases.zsh - Run setup to regenerate:
~/shell/setup/setup.sh
Merge Conflicts on Other Systems
If you get merge conflicts when pulling:
- Run this cleanup script first
- Then pull the latest changes
- The conflicts should be resolved automatically
Files Modified
- dotfiles/my-aliases.zsh - Removed from git tracking
- .gitignore - Added ignore entry with explanatory comment
- Git history - One commit documenting the change
Related Files
- dotfiles/my-aliases.zsh.original - Template file (remains tracked)
- setup/setup.sh - Script that generates aliases from template
- ~/.oh-my-zsh/custom/aliases.zsh - Final generated aliases location