It is possible to clone the internal git repository (using SourceTree at least) and push back commits into the internal git repo
Summary
You can create/clone a repo using the internal git repository, instead of the correct mercurial one.
This happens at least when cloning using SourceTree with both toolsets installed (git and hg).
The local git copy will be completely usable, and you can even push changes back to the remote repo. Those changes will end up only on the git repo, not the hg one, and that will cause more issues: internal errors when trying to see the commits, impossibility to pull those changes from mercurial clones, and so on.
Steps to reproduce
- Have SourceTree with both git and hg installed.
- Clone a remote Heptapod repo, using ssh (not sure if using HTTP will produce this same problem) -> at this point, the interface should say it is a Git repo.
- Once you have cloned the repo, commit some changes and push them back.
- On the Heptapod repo, you should not see the changes on the Activity page, but the Commit history for that repo will display those changes. Trying to click on those commits will produce a 500 error on the server.
What is the current bug behavior?
Heptapod allows git to download and push back a repository
What is the expected correct behavior?
Heptapod should not allow git to use the internal git repositories at all from the outside.
Possible workaround
You can clone the repository using the hg command directly from the command line without problems. Once the repo has been cloned then using SourceTree with it shouldn't cause any issue.