# Git For MATLAB

MATLAB on Cheaha has been configured to work with Git.

## Create a clean folder to use with Git

To start out with, MATLAB's Git requires an empty folder. Currently this is just an empty folder with no source control (a regular MATLAB folder).

Error creating thumbnail: convert: unable to open image /research/apps/rnb/docs/htdocs/tgw/images/c/c9/MatlabOpenToEmptyFolder.png': No such file or directory @ error/blob.c/OpenBlob/2589.
convert: unable to open file /research/apps/rnb/docs/htdocs/tgw/images/c/c9/MatlabOpenToEmptyFolder.png' @ error/png.c/ReadPNGImage/3639.
convert: missing an image filename /tmp/transform_4cc569c-1.png' @ error/convert.c/ConvertImageCommand/3015.

If you have no empty folder, create one, as MATLAB's Git will give an error if there are any files in the folder.

## Clone a Git Repository using MATLAB

Right click in the file browser to bring up the context menu. Navigate to and select Source Control->Manage Files

Error creating thumbnail: convert: unable to open image /research/apps/rnb/docs/htdocs/tgw/images/0/01/MatlabSourceControlManageFiles.png': No such file or directory @ error/blob.c/OpenBlob/2589.
convert: unable to open file /research/apps/rnb/docs/htdocs/tgw/images/0/01/MatlabSourceControlManageFiles.png' @ error/png.c/ReadPNGImage/3639.
convert: missing an image filename /tmp/transform_260e02a-1.png' @ error/convert.c/ConvertImageCommand/3015.

The "Manage Files using Source Control" interface will pop up. Select ""Git"" for your ""Source Control Integration"" option. Under ""Repository Path"" you place the URL of the repository you are going to clone into your empty directory. ""Sandbox"" should be filled in with the current directory. Ideally this is the directory in which you wish to place the cloned repository.

Error creating thumbnail: convert: unable to open image /research/apps/rnb/docs/htdocs/tgw/images/2/22/MatlabCloneRepositoryContextMenu.png': No such file or directory @ error/blob.c/OpenBlob/2589.
convert: unable to open file /research/apps/rnb/docs/htdocs/tgw/images/2/22/MatlabCloneRepositoryContextMenu.png' @ error/png.c/ReadPNGImage/3639.
convert: missing an image filename /tmp/transform_20c9753-1.png' @ error/convert.c/ConvertImageCommand/3015.

In this screenshot a sample GitLab Repository URL is pasted into the ""Repository Path"" text box. If you click "Change" on the same line, an additional window will appear where you can also validate the link prior to attempting to clone the repository.

Once this dialog has been filled in appropriately, clicking the "Retrieve" button will initialize the repository and checkout the current revision into the selected folder

Upon re-inspection of the file browser, it should have now changed to match what is currently in the Git repository that was cloned.

The file browser also now has a "Git" column, which displays the current Git status of each file in the folder.

• A green circle implies the file is up to date
• An empty circle implies the file is currently untracked
• A dot implies the file is ignored by the repository (generally due to rules placed in a .gitignore file)
• A blue square implies the file has been modified since the last commit
• A plus sign implies the file is a new file and has been staged for adding to the repository

Once you have finished your changes, don't forget to "Push" your folder's state back to the repository.

Error creating thumbnail: convert: unable to open image /research/apps/rnb/docs/htdocs/tgw/images/6/6b/MatlabPushChangesBackToGitRepo.png': No such file or directory @ error/blob.c/OpenBlob/2589.
convert: unable to open file /research/apps/rnb/docs/htdocs/tgw/images/6/6b/MatlabPushChangesBackToGitRepo.png' @ error/png.c/ReadPNGImage/3639.
convert: missing an image filename /tmp/transform_97ca81-1.png' @ error/convert.c/ConvertImageCommand/3015.

WARNING: MATLAB does not give any indication whether the current repository in the working directory is up to date with the remote Git repository. It is a good practice to perform a "Pull" prior to doing any work within your working directory, and "Push" after any "Commit."

## Using a working directory previously initialized to Git

If you navigate within MATLAB to a working directory initialized to a Git repository using other means, MATLAB will still recognize the folder as source controlled by Git. All normal Git functions will be available through the MATLAB contextual menu, and the icons in the file browser should show the correct Git status.

## Troubleshooting

MATLAB supports most Git actions as shown in the context menu. If any functions are not working as expected, the "system" command can be used in the MATLAB terminal to simply use the normal Git command line tools.

We are investigating some intermittent behavior issues with inputting comments upon committing within MATLAB on Cheaha. If you experience this issue, please let us know. Feel free to use the Git command line tools in order to workaround the issue.