https://github.com/mikofski/jgit4matlab
JGit wrapper for MATLAB
https://github.com/mikofski/jgit4matlab
git matlab
Last synced: about 1 year ago
JSON representation
JGit wrapper for MATLAB
- Host: GitHub
- URL: https://github.com/mikofski/jgit4matlab
- Owner: mikofski
- License: bsd-2-clause
- Created: 2013-04-16T19:05:51.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2014-03-13T21:43:23.000Z (over 12 years ago)
- Last Synced: 2025-04-23T01:02:00.253Z (about 1 year ago)
- Topics: git, matlab
- Language: Matlab
- Homepage: https://mikofski.github.io/JGit4MATLAB
- Size: 2.8 MB
- Stars: 5
- Watchers: 2
- Forks: 3
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: license.txt
Awesome Lists containing this project
README
JGit4MATLAB
===========
JGit4MATLAB is a wrapper for JGit in MATLAB. It is meant to be used from the
command line.
Installation
------------
Download the full zip-file from [MATLAB Central File Exchange]
(http://www.mathworks.com/matlabcentral/fileexchange/), extract to your working
MATLAB folder, usually `C:\Users\\Documents\MATLAB` and type `JGit`.
This will download the latest version of JGit and edit your Java class path file
called `javaclasspath.txt` that is also in your MATLAB working folder, making a
copy called `javaclasspath.txt.JGitSaved` of `javaclasspath.txt` if it already exists.
After this you must restart MATLAB for the changes to your MATLAB Java static
class path to take effect.
User Info
---------
Set your global gitconfig user name and email using the following:
jgit setUserInfo ''
You can retrieve your global gitconfig settings as well.
[name,email] = JGit.getUserInfo
SSH
---
Create your SSH keys using [PuTTY gen]
(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
and convert them to OpenSSH format. If you
set a passphrase, save it in `%HOME%\.jsch-userinfo` using the following:
jgit saveSSHpassphrase
Usage
=====
In general usage is the same as in [Git](http://git-scm.com/docs/git-help) and
[`org.eclipse.jgit.api.Git`](http://download.eclipse.org/jgit/docs/latest/apidocs/).
jgit ...
JGit.command(args,param,key,...)
Commands & Args
---------------
Add
---
Stage files to git repo.
jgit add file
JGit.add({'list','of','files'})
Branch
------
Create, delete, list and rename branches.
JGit.branch('list') % list local branches
JGit.branch('list',[],'listMode','REMOTE') % list remote branches
JGit.branch('create','newFeature') % create "newFeature" branch
JGit.branch('rename','superFeature','oldNames','newFeature')
JGit.branch('create','remoteBranch', ...
'startPoint','refs/remotes/origin/remoteBranch', ...
'upstreamMode','TRACK') % track "remoteBranch"
JGit.branch('delete',[],'oldNames',{'superFeature','remoteBranch})
Checkout
--------
Check out a branch or commit, create a new branch or check out files from the
index.
JGit.checkout('master') % checkout master
JGit.checkout([],'path',{'file2.m','file2.m'}) % check out files
JGit.checkout([],'startPoint','HEAD~1','path','file1.m')
JGit.checkout('newBranch','createBranch',true) create a new branch.
JGit.checkout('stable','createBranch',true, ...
'upstreamMode','SET_UPSTREAM','startPoint','origin/stable')
Clone
-----
Clone a remote repository.
JGit.clone('git://github.com/eclipse/jgit.git', ...
'directory','repos/jgit')
Commit
------
Commit files to git repo. Any combination of commands will work. If `getenv('EDITOR')`
is empty then `notepad` is used. An empty commit message throws a Java JGit exception.
JGit.commit
JGit.commit('all',true)
JGit.commit('message','your commit message')
JGit.commit('amend',true)
JGit.commit('author',{'name','email'})
JGit.commit('committer',{'name','email'})
Diff
----
View changes.
JGit.diff('previous','master',updated','feature', ...
'path',{'file1','file2},'difftool',true) % compare changes in file1
and file2 between "master" and "feature" branches using the MATLAB
visual comparison tool.
JGit.diff('chached',true) % compare HEAD to staged files.
Fetch
-----
Fetch changes from remote repository.
jgit fetch remote upstream
Init
----
Initialize or reinitialize a Git repository.
JGit.init('directory','repositories/myRepo')
Log
---
Return commit log. Any combination of commands will work. Commits are entered
as strings which can be SHA1 of the commit, HEAD~N, where N is the number of
commits from HEAD or as refs/heads/branch, where branch is the branch of the
commit. You can use 'since' and 'until' independently or together. 'Since' shows
commits newer than a given commit, and 'until' shows older commits. Commits are
always shown from newest to oldest. Push the enter key to advance and q+enter to
quit.
JGit.log
JGit.log('maxCount', 3) % show last 3 commits
JGit.log('since','HEAD~5') % show last 5 commits
JGit.log('until','HEAD~5') % show all except last 5 commits
JGit.log('skip',3) % show commits starting 4 commits ago
Merge
-----
Merge refs.
jgit merge ref
Pull
----
Pull from repository.
jgit pull
Push
----
Push ref to remote.
jgit push ref master remote origin
Status
------
Return status of git repo. Staged files are links which will open them in the
MATLAB editor.
jgit status
JGit.status
Other
-----
Create an `org.eclipse.jgit.api.Git` instance. With this you can do almost
anything. EG: `git.reset.setRef('HEAD').addPath('JGit.m').call` will unstage the
file `JGit.m` from the current commit.
git = JGit.getGitAPI(gitDir) % create a Git instance for repo in gitDir
TODO
====
There are many porcelain functions that would be quick to implement:
`config`, `reset`, `tag`, `rebase`.
All functions should call `JGit.getGitAPI` class function. Then they can use that
instance to do whatever. For other methods, use the appropriate `org.eclipse.jgit`
package directly.
A GUI to mimic `gitk` and `git-gui`. GUI options for some porcelain commands like
log might also be nice. A log GUI that shows a banch graph would be especially nice.
To contribute, please clone the source at Github. Issues can also be posted on Github.
https://github.com/mikofski/JGit4MATLAB
For more information about the JGit API see their documentation.
http://download.eclipse.org/jgit/docs/latest/apidocs/org/eclipse/jgit/api/Git.html