Simple App to help @jaspermayone make it through COMP1050 with a professor who won't use version control.
at main 107 lines 3.5 kB view raw view rendered
1# ZipMerge 2 3A macOS app that helps students merge changes from teacher-provided zip files when version control isn't available. 4 5## The Problem 6 7You're working on a programming assignment. Your professor gives you a starter zip file. You make changes. Then the professor releases an updated zip with fixes or new requirements. Now you need to figure out what changed and merge those updates into your modified code - without losing your work. 8 9**ZipMerge solves this.** 10 11## What It Does 12 13ZipMerge compares your local project directory with a teacher's zip file and shows you: 14 15- 🟢 **New files** from the teacher 16- 🟠 **Modified files** with side-by-side diffs 17- 🔴 **Deleted files** that are in your version but not theirs 18-**Unchanged files** (shown but ignored) 19 20For each file, you choose: 21- **Keep Mine** - Ignore the teacher's version 22- **Take Theirs** - Replace with the teacher's version 23 24After reviewing all changes, apply them with one click. If your project is a git repo, ZipMerge can automatically create a commit for you. 25 26## Installation 27 28### Via Homebrew (Recommended) 29 30```bash 31brew tap jaspermayone/tap 32brew install --cask zipmerge 33``` 34 35### Manual Installation 36 371. Download `ZipMerge.zip` from the [latest release](https://github.com/jaspermayone/ZipMerge/releases/latest) 382. Unzip and move `ZipMerge.app` to `/Applications` 393. Open the app (right-click → Open on first launch) 40 41## Usage 42 431. **Select your project directory** - Click "Choose Directory" or drag it in 442. **Drop the teacher's zip file** - Drag the `.zip` file onto the drop zone 453. **Review changes** - Click through each modified file and see the diffs 464. **Make decisions** - For each file, choose "Keep Mine" or "Take Theirs" 475. **Apply changes** - Click "Apply Changes" to merge 486. **Commit (optional)** - If it's a git repo, create a commit with the changes 49 50## Features 51 52- **Side-by-side diff viewer** for modified files 53- **File-by-file merge decisions** - no forced overwrites 54- **Git integration** - auto-detect repos and offer to commit 55- **Smart zip handling** - handles zips with wrapper folders 56- **Automatic cleanup** - removes temp files after merge 57 58## Development 59 60### Building from Source 61 62```bash 63# Clone the repository 64git clone https://github.com/jaspermayone/ZipMerge.git 65cd ZipMerge 66 67# Open in Xcode 68open ZipMerge.xcodeproj 69 70# Or build from command line 71xcodebuild -project ZipMerge.xcodeproj -scheme ZipMerge -configuration Release build 72``` 73 74### Project Structure 75 76- `ZipMerge/Models.swift` - Data models for file comparisons 77- `ZipMerge/FileComparer.swift` - Core comparison and merge logic 78- `ZipMerge/ContentView.swift` - Main UI 79- `ZipMerge/DiffView.swift` - Diff visualization 80 81See [CLAUDE.md](CLAUDE.md) for detailed architecture documentation. 82 83### Creating a Release 84 85See [RELEASING.md](RELEASING.md) for the release process. 86 87## Known Limitations 88 89- Currently supports whole-file merge decisions only (no line-by-line merging) 90- Binary files show as "(binary or unreadable)" in diff view 91- Requires macOS with SwiftUI support 92 93## Contributing 94 95Contributions are welcome! Please feel free to submit a Pull Request. 96 97## License 98 99Licensed under the [O'Saasy License Agreement](LICENSE.md) - essentially MIT with a non-compete clause for SaaS offerings. 100 101## Author 102 103Built by [Jasper Mayone](https://jaspermayone.com) to survive COMP1050 with a professor who won't use version control. 104 105## Acknowledgments 106 107Sometimes the best tools come from personal frustration. This is one of those times.