# 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.original` template - **Customized per system** (debian vs ubuntu vs fedora) - **Should not be tracked** in git to prevent conflicts ## What This Script Does 1. **Removes git tracking** of `dotfiles/my-aliases.zsh` 2. **Updates .gitignore** to ignore the file 3. **Commits the changes** with a descriptive message 4. **Verifies the cleanup** was successful 5. **Provides next steps** for pushing and regenerating aliases ## Usage ### On Each System You Manage ```bash # 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 1. **Push the changes** to your repository: ```bash git push origin main ``` 2. **Regenerate the aliases** on the system: ```bash # Run setup to regenerate aliases from template ~/shell/setup/setup.sh ``` 3. **Verify aliases work**: ```bash # 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: ```bash 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: 1. This is normal - the file exists locally but is now ignored 2. Delete the local file: `rm dotfiles/my-aliases.zsh` 3. Run setup to regenerate: `~/shell/setup/setup.sh` ### Merge Conflicts on Other Systems If you get merge conflicts when pulling: 1. Run this cleanup script first 2. Then pull the latest changes 3. 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