Documentation

Support

Unity Version Control

GitServer limitations

Manage potential issues or differences in expected behavior when you use GitServer.
Read time 2 minutesLast updated 21 days ago

If you use GitServer, there are restrictions on some GitHub operations ,such as fast-forward, rebase, and commit deletion, and how GitServer doesn't enforce security. This page also covers important configuration options, such as to disable deltification on your GitHub repository, and functional limitations such as the lack of support for shallow clones and progress indicators for
git push
commands.
GitServer also has differences in how you handle annotated tags and branch hierarchies, which protocols it supports, its impact on storage, and the correct procedure to follow if you need to recreate the GitServer mapping folder.

Avoid fast-forward, rebase, and deleting GitHub commits

Rebasing and deletion of commits are already restrictions when you push to a regular GitHub server. The fast-forward restriction is caused by the fact that in GitHub, a single commit can be in more than one branch. In UVCS, every changeset links to a single branch, and can’t be on more than one branch simultaneously.

Security isn’t enforced in GitServer

GitServer doesn’t perform security checks for exported repositories. GitHub clients can download the entire repository content and push changes to the repository. To restrict the repositories that are visible to GitServer, use the
export.repo
entry in the
gitserver.conf
file.

Disable deltification on Git repositories

GitServer doesn’t support deltified GitHub packages. This is a performance restriction to speed up metadata and data conversion between the two systems. To disable deltification on the Git side, run the following command on your Git repository:
git config --global pack.window 0
If GitServer receives a pack with deltas during a push, GitServer displays the following error message:
git deltas are not supported. Please, set the 'pack.window 0' config variable or run an 'git repack -a -f -d' command
The message includes clear instructions on how to repack the Git repository to disable deltas:
git repack -a -f -d

GitServer doesn’t support shallow clones

GitServer doesn’t support shallow clones. Depending on the Git client version, the following error message will be displayed:
> git clone git://localhost/default --depth=1Cloning into 's'...fatal: Server does not support shallow clients

The GitHub push command doesn’t show progress

The
git push
command doesn’t show progress while you import objects into UVCS.

Annotated tags

Annotated tags import correctly to UVCS, but if you clone them again from GitServer into GitHub, they export as lightweight tags.

Branch names and hierarchies

Branch names with multiple levels can be different in GitHub and UVCS. For example, a branch named
/main/Fix-5.0/scm003 converts to 
main-Fix-5.0-scm003` in GitHub.

Supported GitHub protocols

You can access GitServer through both
git://
and
http://
protocols. GitServer doesn’t support SSH.

Storage restrictions

When you export a repository with GitServer, you duplicate the file contents of that repository so it exists both in the UVCS format inside the database, and the GitServer storage folder.

Recreate the GitServer mapping folder

If you need to recreate the GitServer mappings folder, the new GitHub SHAs might not match the old ones. The following actions are examples that create new GitHub SHAs that don’t match the old ones:
  • Edit a changeset comment.
  • Perform a replica that affects any of the mapped changesets, such as adding a new merge link.
This means that after you recreate the GitHub mappings, you always need to create a new GitHub repository and clone it from UVCS. If you reuse the previous GitHub repository, it can cause duplicated commits and also duplicate changesets when you push changes back to UVCS.