A Windows shell extension built with SharpShell and LibGit2Sharp to display file statuses in a Git repository using icon overlays.
This tool was developed for two main reasons:
- Learning: A personal project to understand how Windows shell integration works.
- Lightweight Alternative: A lightweight alternative to TortoiseGit, focused solely on overlay icons, avoiding unnecessary additional features.
- 🗂️ File Status Overlays: Shows the current Git status of files directly in Windows Explorer.
- ⚙️ Real-Time Updates: Overlays update automatically when file status changes.
- 💻 Native Integration: Seamless integration with Windows Explorer.
- 🪶 Lightweight: Minimal system resource impact.
- Administrator rights
- .NET Framework 4.7.2 installed
- Git installed and configured
- Visual Studio 2022
- Windows 10 (1809) or higher
-
Clone the repository:
git clone https://github.com/berik-99/GitStatusOverlay.git
-
Build the project:
- Open the solution in Visual Studio 2022
- Select Release configuration
- Build the solution
-
DLL Preparation:
- Copy the generated
.dll
file to an accessible location. ⚠️ Note: Once registered, the DLL will be locked by the system.
- Copy the generated
-
Register the Shell Extension:
# For 64-bit systems ServerRegistrationManager.exe install "[path]\GitStatusOverlay.ShellExtension.dll" -codebase -os64 # For 32-bit systems ServerRegistrationManager.exe install "[path]\GitStatusOverlay.ShellExtension.dll" -codebase -os32
-
Restart Explorer:
taskkill /F /IM explorer.exe start explorer.exe
-
Unregister the Shell Extension:
ServerRegistrationManager.exe uninstall "[path]\GitStatusOverlay.ShellExtension.dll"
-
Restart Explorer:
taskkill /F /IM explorer.exe start explorer.exe
-
Check the registry:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
-
Verify the presence of keys related to
GitStatusOverlay
. If they are present, check how many keys are listed. Windows has a limitation of 15 overlay icons. -
If there are more than 15 keys, you will need to remove some to allow for proper functionality.
-
Error 1: DLL not registered
- Solution: Re-run registration as administrator.
-
Error 2: Conflict with other overlays
- Solution: Temporarily uninstall other software using overlays.
To view logs, launch the program located in the Tools folder named SharpShell.Easy.Log.v1.0
. Special thanks to the creators of SharpShell-Easy-Log for providing a helpful logging tool!
Q: Is it compatible with other Git software?
A: Yes, it can coexist with Git GUI, SourceTree, etc.
Q: What's the system performance impact?
A: Minimal impact, uses approximately 20MB RAM.
Q: Does it support remote repositories?
A: Yes, it shows file status relative to configured remote.
- 📦 Automated Installer:
- Develop an installer to simplify distribution and installation.
- Installation wizard with configuration options.
- Automatic handling of existing overlays.
- Automated uninstallation process.
- 🔄 Updates:
- Auto-update system.
- New version notifications.
- 🎨 UI:
- Configuration panel.
- Color customization.
A big thank you to all the developers of the libraries used in this project:
- SharpShell: A .NET shell extension framework that simplifies the creation of Windows shell extensions.
- LibGit2Sharp: A .NET wrapper for the libgit2 library, providing Git integration.
- SharpShell-Easy-Log: A logging tool for SharpShell extensions, thanks to the creators for their contribution!
Contributions are welcome! To contribute:
- 🍴 Fork the repository.
- 🔧 Create a branch (
git checkout -b feature/AmazingFeature
). - 💾 Commit changes (
git commit -m 'Add AmazingFeature'
). - 📤 Push to branch (
git push origin feature/AmazingFeature
). - 🔄 Open a Pull Request.
This project is distributed under the MIT License. See the LICENSE
file for details.