Skip to content

ViscousPot/GitSync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

891 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


GitSync

Mobile git client for syncing a repository between remote and a local directory

license last commit downloads stars sponsor

2024 Gem of the Year (Obsidian Tools)

Get it on Google Play    Get it on Google Play    Get it on Izzy On Droid

Wiki


GitSync is a cross-platform git client for Android and iOS that aims to simplify the process of syncing a folder between a git remote and a local directory. It works in the background to keep your files synced with a simple one-time setup and a range of options for activating manual syncs.

  • Supports Android 5+ & iOS 13+
  • Authenticate with
    • HTTP/S
    • SSH
    • OAuth (GitHub, GitLab, Gitea)
  • Clone a remote repository
  • Sync repository
    • Fetch, pull, stage, commit, push
    • Resolve merge conflicts
    • Retry automatically when the network returns
  • Sync mechanisms
    • When an app is opened or closed (Android)
    • On a recurring schedule
    • From a quick tile (Android)
    • From a home screen widget
    • From an iOS shortcut or automation
    • From a custom intent (advanced)
  • Browse and edit in-app
    • File explorer with code editor and image viewer
    • Recent commits, plus file, line and commit diffs
    • Branch management (create, rename, delete, checkout)
    • Multiple remotes (add, rename, delete, set URL)
  • GitHub and GitLab integration (when signed in via OAuth)
    • View, comment on and create issues
    • View, comment on and create pull requests
    • View workflow runs (GitHub Actions)
  • AI features
    • Chat about your repository
    • Wand auto-complete on text fields like commit messages
    • Agent that can run repo actions for you
    • Separate model selection for chat, tools and the wand
    • A global toggle to hide all AI features
  • Manage multiple repositories with containers
  • Repository settings
    • Signed commits
    • Customisable sync commit messages
    • Author details
    • Edit .gitignore and .git/info/exclude
    • Disable SSL verification per repo

More information can be found at the wiki
Give us a ⭐ if you like our work. Much appreciated!

Support

For support, email bugs.viscouspotential@gmail.com or create an issue in this repository.

Build Instructions

If you just want to try the app out, feel free to download a release from an official platform!

GitSync is a Flutter app with a Rust core (via flutter_rust_bridge).

1. Prerequisites

  • Flutter: version pinned in .fvmrc (currently 3.35.2). The repo is set up for FVM; install with dart pub global activate fvm and then fvm install.
  • Rust: stable toolchain via rustup. The Rust crate lives in rust/.
  • Android: Android Studio with a recent SDK (compileSdk follows Flutter, minSdk 21). The Rust crate cross-compiles to aarch64, armv7, x86_64 and i686 targets, which you can add via rustup target add.
  • iOS: Xcode 15+ on macOS, the aarch64-apple-ios, aarch64-apple-ios-sim and x86_64-apple-ios Rust targets, and CocoaPods.

2. Clone & install

git clone https://github.com/ViscousPot/GitSync.git
cd GitSync
fvm flutter pub get

3. OAuth secrets

OAuth providers (GitHub, GitLab, Gitea) need client IDs/secrets. The repo ships a template:

cp lib/constant/secrets.dart.template lib/constant/secrets.dart

Set oauthRedirectUrl = "gitsync://auth". Without these the OAuth sign-in flows won't work, but HTTPS Basic and SSH still do.

4. Generate the Rust ↔ Dart bindings

The bridge is regenerated when the Rust API changes:

cargo install flutter_rust_bridge_codegen --version 2.12.0
flutter_rust_bridge_codegen generate

5. Run

fvm flutter run

Contributing

Your support means a lot! If you find GitSync useful, please:

  • Star the repo to help others discover it
  • Share it with friends or communities that might benefit
  • Consider becoming a GitHub Sponsor

At this time, code contributions aren’t needed anywhere in particular, but I’d love your help improving localization

Localization Contributions

If you’d like to contribute translations:

  1. Locate the English strings in lib/l10n/app_en.arb
  2. Find the corresponding language file (e.g. lib/l10n/app_es.arb for Spanish)
  3. Add or refine translations in the appropriate file
  4. Submit a pull request or open an issue with your suggestions

Currently supported languages:

  • English (app_en.arb, the source file)
  • Arabic (app_ar.arb)
  • Chinese, Simplified (app_zh.arb)
  • Chinese, Traditional (app_zh_Hant.arb, early stage)
  • French (app_fr.arb)
  • German (app.de.arb)
  • Japanese (app_ja.arb)
  • Russian (app_ru.arb)
  • Spanish (app_es.arb)

If you'd like to know what's still untranslated for a given locale, see untranslated.txt. Even small improvements to wording or grammar are welcome.

Acknowledgements

About

Mobile Git client for syncing a repository between remote and a local directory

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors