Git Product home page Git Product logo

mgit's Introduction

MGit

MGit is a Git client Android App.

This is a continuation of the SGit project.

Get it on Google Play Get it on F-Droid

Notes

Build Status

Join the chat at https://gitter.im/MGit-Android/Lobby

Translate - with Stringlate

  • If you encounter any issues (bugs, crashes, etc.) and want to help improve this project, please open an issue on GitHub describing: what the issues are; and how they were caused, to allow for re-creation and fixing of bugs.
  • This app requires minimum of for Android v5.0

Editing Files

As of version 1.5.7, MGit no longer provides an internal texteditor, instead if you wish to edit files, you will need to have an editor app installed.

An open source editor that has been tested to work with MGit is "Turbo Editor"

but others that support File Providers should also work.

Supported Features

  • Create local repositories
  • Clone remote repositories
  • Pull from origin
  • Delete local repositories
  • Browse files
  • Browse commit messages (short)
  • Checkout branches and tags
  • HTTP/HTTPS/SSH are supported (including SSH with private key passphrase)
  • Username/Password authentication is supported
  • Search local repositories
  • Private key management
  • Manually choose code language
  • git diff between commits
  • Import existing repositories (that is, you can copy a repository from computer and import to MGit)
  • Checkout remote branches
  • Merge branches
  • Push merged content
  • Edit file via external app that can edit the given file type
  • Commit and push changed files
  • Committer information
  • Prompt for password
  • Option to save username/password
  • git status
  • Cancel when cloning
  • Add modified file to stage
  • View state of staged files (aka index)
  • git rebase
  • git cherrypick
  • git checkout <file> (reset changes of a file)

Quick start

Clone a remote repository

  1. Click on the + icon to add a new repository
  2. Enter remote URL (see URL format below)
  3. Enter local repository name - note that this is not the full path, as MGit stores all
    repositories in the same local directory (can be changed in MGit settings)
  4. Click the Clone button
  5. If required, you will be prompted for credentials to connect to the remote repo. MGit will download the repository (all branches) to your device

Create a local repository

  1. Click on the + icon to add a new repository
  2. Click on Init Local to create a local repository
  3. Enter the name for this repository when prompted
  4. A local empty repo will be created

URL format

SSH URLs

  • SSH running on standard port (22): ssh://username@server_name/path/to/repo
  • SSH running on non-standard port: ssh://username@server_name:port/path/to/repo
  • username is needed - by default, MGit tries to connect as root.

HTTP(S) URLs

  • HTTP(S) URL: https://server_name/path/to/repo

ToDo List

Future enhancements and bugs are tracked here on Github.

License

See GPLv3

All code written by [email protected] can at your option also be used under the MIT license.

Help

If you want to help improve this project, contributions, especially translations are very welcome. Also contributions to documentation via the wiki for this repo are also most welcome!

Contributing code

If you would like to contribute code, either a bugfix or a new feature, please make sure there is a open issue that addresses the new code. No Pull Requests will be merged that do not reference an existing issue in the repo.

Please use the Android Studio formatting settings set for this project in the repo.

All strings visible to the user need to go into strings resource file.

Project Goals

  • Provide the best GUI git client available on any platform
  • Be usable on both phone, tablet and laptop form-factor devices

Non-goals for the project

  • Support for proprietary vendor APIs (eg. Github)

Major Contributions

For new features, a discussion of the new functionality may need to take place in the comments on the issue covering it, so it may be best for that to occur before you spend time on writing the new code.

The app is about to have a major restructure. All new functionality in the app will be written in Kotlin/Rx per #277. Please be aware that the project is now using Data Binding Library and all future functionality should make use of it.

Submitting a Pull Request (PR)

Fork from this repo, create a new branch, commit your changes and then send a pull request against the master branch of this repo.

If you are working on a branch for some time, you may find that changes to master get merged in the meantime, if that happens please do NOT merge master into your branch! Instead rebase your branch onto the current head of master.

mgit's People

Contributors

aldaircruz avatar arthurzam avatar bigdavedev avatar bnjmnt4n avatar cfoote avatar crystal-rainslide avatar cyclenerd avatar hakimdiallo avatar jumkey avatar kb-1000 avatar linsui avatar liscju avatar maks avatar marukami avatar memboc avatar mlewe avatar muojp avatar naofum avatar paultcochrane avatar phcoder avatar phonedolly avatar prattpratt avatar rsteube avatar sheimi avatar shotastage avatar tacothedank avatar timschumi avatar tmluna avatar trendfischer avatar turleo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mgit's Issues

Create tags

From @maks on August 20, 2016 5:59

Need to be able to create tags, both lightweight and annotated.

Copied from original issue: sheimi/SGit#234

Feature request: markdown viewer

From @tonydiep on September 29, 2016 9:50

I love this app. Thanks for making it. Below is a user story as a feature request.

STORY
As a user, I'd like to see Markdown files fully styled (instead of raw text) so that I don't have to open it in a Markdown editor.

POSSIBLE IMPLEMENTATIONS

Copied from original issue: sheimi/SGit#271

keyboard shortcuts

From @maks on August 23, 2016 4:21

For use on devices with physical keyboard (ie. Chromebooks, phones/tablets connected to external keyboard), it makes sense to provide a set of keyboard shortcuts, especially to functionality that currently requires swipe gestures which are difficult when not using a touchscreen, eg. navigating between files/commits/status views.

Copied from original issue: sheimi/SGit#235

failed resolution of: Lorg/ietf/jgss/oid

From @rclasen on July 31, 2016 13:28

Hi,

when trying to connect to my git repo using ssh I keep getting this error message: "failed resolution of: Lorg/ietf/jgss/oid" (hand-copied - case may vary).

The SSH server is configured to support/offer kerberos/gss authentication - maybe this is related.

Is there a way to workaround this?

thanks,
Rainer

Copied from original issue: sheimi/SGit#205

split text editor out into separate AAR

From @maks on October 6, 2016 23:30

The text editor/viewer should just be a component that SGit pulls in as a dependency rather than contained with the app.
Also it should be published in jcenter as it seem it would be generally useful outside this project as there seems to be a lack of any open source code text editor components being available.

Copied from original issue: sheimi/SGit#275

upgrade jgit library

From @maks on May 26, 2016 4:56

Currently using jgit:3.6.2.201501210735 whereas maven central already has available jgit:4.4.0.201605250940-rc1

Copied from original issue: sheimi/SGit#182

Disable empty commits

From @bclermont on October 25, 2016 10:46

When a repository is a working tree clean, it's still possible to create a new commit from SGit interface.

this commit is empty and don't provide any value. Commit should be grey and disable in the UI if it's clean.

Copied from original issue: sheimi/SGit#281

Better UI for large wide-screen devices

From @maks on September 29, 2016 0:28

The user interface is not optimised at the moment for larger devices, especially in landscape orientation.
Initially providing a 2-pane view for the repo details view: files/commits/status (ala gmail) would be a nice improvement.

Copied from original issue: sheimi/SGit#270

Editor removes newline character from the end of the file

From @teresaejunior on October 6, 2016 15:54

The internal editor removes the newline character from the end of the file, which makes the following appear on the git diff: "\ No newline at end of file".

Besides, a newline at the end of text files is the standard defined by POSIX, and all Unix tools expect this convention and work with it. References:

Copied from original issue: sheimi/SGit#274

Text Rendering and Syntax Highlighting failure with Fortran (possibly other languages too)

From @aphirst on September 2, 2016 15:30

SGit 1.3.2 from Google Play
Cyanogenmod 13.0 (Android 6.0.1)

I have many .f90 files (Fortran) in my repositories, and I get the following error when trying to preview them:

Uncaught Error: Unknown language: "fortran" -- From line 1 of file://android_asset/js/highlight.js

Other text filetypes appear to work fine (plaintext, .m), along with syntax highlighting, but obviously there are many filetypes I did not test.

If additional info would be useful, I'm happy to provide it: please just ask. ๐Ÿ˜„

Copied from original issue: sheimi/SGit#252

Show author in commit log

From @schumaml on June 22, 2016 11:35

The current commit log seems to show the committer, but not the aut5hor of a change. This is sometimes more interesting to know, especially if a project has many contributors who provide patches, but don't apply them to a code base.

Copied from original issue: sheimi/SGit#201

cannot open git-upload-pack

From @ckp5566 on October 17, 2016 3:31

Hi
I try to use "http" to git clone my git on my own server
but there is an error "org.eclipse.jgit.api.errors.TransportException : cannot open git-upload-pack"
the link "http://user:password@ip:port/gitdata" works well on my computer, but when I use this link on sgit on my android device, it gets an exception of "cannot open git-upload-pack".

Any one know what's happen of this?

Copied from original issue: sheimi/SGit#277

A task for this repo is already running

From @jkufner on September 9, 2016 22:5

I'm getting this message all the time: "A task for this repo is already running"

I guess it is because git status is running when I open a repository, but it makes me wait for it for too long (it is a bit bigger repository). So it would be nice if git status could be terminated when I decide to do something else.

Also, there is no indication, that some task is running on the background. There is progress bar for git pull & push, but nothing else.

Copied from original issue: sheimi/SGit#255

git blame view

From @maks on August 23, 2016 4:28

Provide option to display "blame" view in margin when viewing a files contents.

Copied from original issue: sheimi/SGit#237

Commit -s

From @sc4ryb3ar on September 26, 2016 13:12

Would you be willing to add the ability to sign off on commits made through sgit? By the way, I've been using you git client in conjunction with 3 others available.....your client is by far the most useful, so much so, as of yesterday, I have removed the others from my phone. Thank you for your time and development with this app. A donation will be headed your way soon :)

Copied from original issue: sheimi/SGit#267

Username is Ignored when Logging in via SSH

From @m1cm1c on September 5, 2016 12:14

When I try to clone a repository via SSH and want to log in using username and password, I have to use

ssh://[email protected]/path/to/repository

If I use

ssh://server.com/path/to/repository

and enter the correct username and password, SGit tries to log in using the username root (which of course isn't the username I entered into the form).

I think SGit should try to log in using the username the user entered into the form.

Copied from original issue: sheimi/SGit#253

Ignored files are shown in status page

From @m1cm1c on September 6, 2016 16:55

In the gitignore in the root of my documents repo, I ignore all files ending with ~. As you can see, on my computer it works (s does git status):

SGit, on the other hand, shows me a lot of these files in its status page:

(I censored some file names for privacy reasons.)

Because contents of the status page aren't scrollable, I can't even scroll down to see the changes I care about.

The gitignore file in the root of the repo is of course the same:

Copied from original issue: sheimi/SGit#254

Create tags

From @maks on August 20, 2016 5:59

Need to be able to create tags, both lightweight and annotated.

Copied from original issue: sheimi/SGit#234

Weird scrollbars(?) in commit diff view

From @memeplex on August 31, 2016 3:35

See the grey bars at the right and bottom of each widget. Only when the contents are bigger than the window these bars don't appear. That is, if they were scrollbars they appear only in cases they're unnecessary while being hidden when they would have made sense.

screenshot_2016-08-31-00-32-01

Copied from original issue: sheimi/SGit#247

handle exception when trying to import corrupted repo

From @maks on September 28, 2016 0:19

E/AndroidRuntime: FATAL EXCEPTION: main
   Process: me.sheimi.sgit, PID: 3045
   org.eclipse.jgit.api.errors.JGitInternalException: An exception occurred while trying to add the Id of HEAD
   at org.eclipse.jgit.api.LogCommand.call(LogCommand.java:154)
   at me.sheimi.sgit.database.models.Repo.getLatestCommit(Repo.java:363)
   at me.sheimi.sgit.database.models.Repo.updateLatestCommitInfo(Repo.java:295)
   at me.sheimi.sgit.dialogs.ImportLocalRepoDialog.updateRepoInformation(ImportLocalRepoDialog.java:150)
   at me.sheimi.sgit.dialogs.ImportLocalRepoDialog.onClick(ImportLocalRepoDialog.java:127)

Copied from original issue: sheimi/SGit#269

[subjective] Dark theme folder icon color

From @memeplex on August 31, 2016 3:19

Why yellow? Most dark themes tend to use some kind of pastel blue. Sgit already uses blue for the top bar separator, why not use the same color for folder icons? I think it will make the theme more consistent.

Copied from original issue: sheimi/SGit#246

EINVAL error

From @LeftPinkie on May 31, 2016 18:28

I get an 'EINVAL' error while trying to clone a repo. The app does the download and reconciliation, then it errors out. Any idea as to what this error means or how I can resolve it?

Copied from original issue: sheimi/SGit#188

Overwrites files managed by git-annex

From @teresaejunior on September 11, 2016 23:12

Hello! First of all, thank you for always improving sGit!

I don't really know if this is a bug in sGit or maybe an Android filesystem limitation, but files managed by git-annex are forcefully changed and committed with sGit. Since git-annex just creates symlinks for the files, users can clone the repo and work on the code normally without installing or understanding git-annex.

  1. Clone [email protected]:teresaejunior/git-annex-test.git (which has a cat binary managed by git-annex).
  2. Create an empty file called test.
  3. Add all to stage.
  4. At the Status tab, you can now see that cat appears under Changed files.
  5. You can also Commit, and see at the diff that cat was included in the commit.

Copied from original issue: sheimi/SGit#257

Basic stash support

From @memeplex on August 31, 2016 0:28

When pulling there is the chance that local changes already happened. I can't see any reasonable way to deal with this situation besides dirty committing. Add at least the ability to "pull stashing": stash pull stash-pop.

Copied from original issue: sheimi/SGit#244

Cloning remote repository not working

From @shaun27stars on April 16, 2015 9:52

Cloning a repository, it reaches the end - "updating references: 100%" and then the repository disappears again.

The following message appears briefly:
attempt to use inflator after calling end

Repository is on BitBucket, https.
Device: Android Galaxy Tab 10.1
Android version: 4.0.4

SGit version 1.2.4.4

Copied from original issue: sheimi/SGit#151

symlink behavior strange

From @wxl on July 16, 2015 19:37

So my repo has some symlinks. Normally, on desktop, I have no problem with these. However, when pulled in by SGit, they are converted to text files containing the location they point to. Worse, when a push is made, regardless of whether or not these files are touched, they overwrite the symlinks.

Copied from original issue: sheimi/SGit#159

SGit should scan for new repos

From @maks on August 24, 2016 5:13

SGit should do a dir listing of the top-level repo directory, to check for new repos that have been created by a tool other than SGit (ie. they are not in SGits sqlite db) and offer to "import" them for the user.

Copied from original issue: sheimi/SGit#239

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.