Perforce Public Knowledge Base - Helix4Git FAQ
× PRODUCTS SOLUTIONS CUSTOMERS LEARN SUPPORT
Downloads Company Partners Careers Contact Free Trials
Menu Search
Perforce
Reset Search
 

 

Article

Helix4Git FAQ

« Go Back

Information

 
Problem
Frequently Asked Questions for Helix4Git
Solution

Frequently Asked Questions for Helix4Git

Please checkout this webinar for an in-depth overview of Helix4Git:  https://www.perforce.com/webinars/git-scale


I love using Git for development. Why should we use Helix4Git?
 
Do you need to build code between products and teams? Do you need to work with stuff other than source code, or collaborate with non-technical teams? Do you want to see every place a bug fix might need to be merged?

Helix is really good at handling these problems, and now you can take advantage of Helix to make your Git repositories faster and more adaptable.  For further details, please see this blog:  https://www.perforce.com/blog/introducing-helix4git
 


I'm on the hook for administration and security. What does Helix4Git do for me?
 
It solves your most important problems. Since Helix acts as the master repository, you can use our proven procedures for backups, HA/DR,compliance, and auditing. Helix access permissions extend to the branch level for reads and file level for the writes.


What software do I need to use Helix4Git?
 
You will need a Helix server of 2017.1 or greater, a Git Connector server and a Git client. As an end user you can use any normal Git program: the Git command line, SmartGit, Tower, SourceTree, XCode, and so on. 

 
Do I need a license to use Helix4Git?
 
The 2017.1 release allows you to create 10 repositories.  If you require more repositories, please contact our Sales team.
The Helix application user (gconn-user) who manages requests from the Git Connector requires a license.  
Any user who accesses the git repos from the Helix Versioning Engine, via the Git Connector, will require a Helix4Git license.
 
 
How does the Git Connector affect my Helix server?
 
The Git Connector should be installed on a separate server.  The Git Connector will send p4 commands to the Helix server to push/pull data to/from the Helix server. 
During Git Connector configuration, the application user 'gconn-user' is created for you. This user will be set up with admin level permissions for the Helix server, and write permissions for every existing Graph Depot. 
You will need to grant write permission to the gconn-user in the protections table. 
write user gconn-user * //...
 
What authentication methods are allowed?
 
The Git Connector supports both SSH authentication and HTTPS.


Is communication with Git Connector secure?
Communication is over SSH or HTTPS. The Git Connector can communicate with Helix over SSL.
 

How does the Git Connector handle authentication and authorization?
 
The Git Connector uses SSH keys to verify your identity, and matches your Helix user account and public key to that stored in the Helix server and the Git Connector.
HTTPS checks the user name and password against the Helix user name and password. 
 
In addition, the Git Connector will check the permissions of the user.
 
 
What load does Git Connector put on Helix?
 
There is no load on Helix for Git queries, which occur against the local repository.  Some additional load is added during pulls/clones and pushes, but is not excessive.
 
 
What about performance? How many Git repositories can the Git Connector handle?

We have done performance testing and will continue to analyze the product as it evolves. Here are some notes and recommendations:
  • The number of repositories is not as significant a factor as the size and use of the repositories.   

Can the Git Connector connect through a proxy, broker, edge server or replica?
 
No, we recommend configuring the Git Connector to talk directly to the main Helix server.
 
 
 Could I use the Helix Versioning Engine to deploy data from git repos or feed a farm of build servers with data from git repos?
 
Yes, you can sync classic and graph depot paths into a single workspace for builds.  There is also the graph-push-complete trigger which fires when a git push of a specified repo has successfully completed.

You can use this trigger to signal that all the files are present and ready for a build, testing, or diagnostic tool.
 

Are there any configuration tools for the Git Connector?
 
Yes, you can run gconn --help to see the configuration tools available, such as configuring and listing the mirrorhooks.
 
  
What happens if I obliterate Helix data that is used through the Git Connector?
 
This would disable the ability to clone, fetch or push to this repository.
 

Are there any limitations on how I use Git when I want to also use the Git Connector?

No, It is just like ANY git remote, with the added benefit of an intelligent cache and the ability to connect to the Helix Versioning Engine.


Does Git history get squashed when it goes into Helix?
 
No. Each Git commit is recorded.  However, there is a force-push permission that allows non-fast-forward pushes to be performed.


Does Gerrit work with the Git Connector?
 
Yes, you can configure one-way mirroring from Gerrit into your Helix server:
  • Future changes are submitted as reviews to Gerrit.
  • Upon the approval of the review, Gerrit pushes the change to Helix through a webhook on the Git Connector.

This technique lets you use Gerrit as a workflow and code review system on top of Helix. It leverages Gerrit's ability to mount another Git repository (in this case Git Connector) as a mirror.
The limitation is that changes need to be made directly to Gerrit and cannot be pushed directly to the Git Connector.
Contact Support for more information on this technique if you're interested.


How does this relate to git-p4?
  • git-p4 is an open source connector that is part of the Git distribution itself.  
  • git-p4 requires additional software and workflow steps for the end user, while the Git Connector provides a seamless Git experience
  • git-p4 stores data in classic Helix depot, where as Git Connector stores Git data natively in Graph depot depots

If I'm not using Git today, what's the benefit of incorporating it with our existing use of Helix? What does Git add, that we can't already do with things like branches and shelving?
 
Some developers like Git's lightweight branching and ability to work disconnected. However, if your existing workflow is working well, there is no need to change.


How do you handle conflicts when pulling or pushing?
 
If you get a conflict when pulling from the Git Connector, resolve it normally using Git tools. If you get a conflict when trying to push to the Git Connector (i.e. your Git repository is behind Helix), you should abort, pull and rebase, then push. It is similar to the merge down, copy up paradigm used in Helix streams.


Does Git Connector help with managing large binary files in Git?
 
You can use Git LFS with the Git Connector for non-mirrored repositories.

 
Can I import a repos from a graph depot in a Stream view?
 
Yes, streams can contain an import path of a graph depot repository.
 

Are Git Submodules supported?
 
Yes


How are classic Helix files stored in the Graph depot?
 
Classic Helix files are not stored in the Graph depot. Graph depots store Git data natively.


How can we modify them if they are pushed to Helix Graph Depot?

The files should be modified from a git client and the changes should be pushed back into Helix through either the Git Connector or through the UI mirrored to Helix.

If the repository is mirrored from a UI such as GitHub, GitLab, or Gerrit, users will not be permitted to push directly to the Git Connector.  They will need to push their changes to the UI which will then be mirrored to the Helix Versioning Engine via a Git Connector.  They can at any time, pull new changes from the Git Connector.

In addition, it is possible to sync the contents from both Helix depots and Graph depots into the same p4 client workspace. This is useful for including files from both types of projects into a single software build.


What kind of permissions are required to update Helix files in a Graph Depot, does it use the protections table?
 
No, the graph depot permissions are different and separate from the Helix protection table.  The "grant-permission" syntax are used to grant the required permissions for users to access graph depot content.  In order to update Helix files the developer will require 'write-all' or 'write-ref' permissions.


Are p4 grant permissions versioned like the P4 protection table in the //spec/ depot?
 
No, the db.graphperm table is not a spec like the db.protect table.  However, it will be backed up when running the standard checkpoint process.


Will P4 labels from a Graph depot be pulled down as part of the git fetch? How are P4 labels identifiable from a Git client?
 
No, P4 labels are for Helix classic files, not for Graph depot. The Graph depot will store git tags.


How are Git Tags applied to Git repositories stored in the Graph Depot?  How do you identify all git repos that have a Git tag?
 
You can run the ‘p4 graph show-ref’ command to list all branch references and tags and then grep for the specific tag


Can I sync to a specific branch or tag?
 
Yes. You may also sync both classic and graph depots onto the same client workspace. If the client spec maps both a classic depot and a depot of type graph, p4 sync updates the client workspace with files from both types of depots.


How can I decouple a Git repo that was talking to Git Fusion and transition to using Git Connector and Helix4Git?
 
You can follow the steps in this KB article:  Migrating Repos from Git Fusion to Helix4Git


Will all history from the Git repo move under the graph depot?
 
Yes, all the history of the git repository will be pushed to the Helix graph depot repo.


What are the advantages of using Helix4Git?
 
Helix4Git is storing git data natively and more efficiently. Git Connectors may also be installed in any of your remote sites, similar in arrangement as proxy and edge servers to a master/commit server. The Git Connector can also act as an intelligent on-demand proxy for remote sites, to enable faster LAN speed read operations on your git repos from your remote locations.  There is also the flexibility of only storing the repos you want on specific Git Connectors.  It will only fetch what you need & not the whole list of repos & files from the central server. Any subsequent fetches/clones will be tremendously faster.  


Does Helix4Git require licensing?

Helix4Git is built into the 2017.1 Helix versioning engine.  You can store ten git repositories.  To store additional repositories, you will want to request a quote.
If you have other questions that are not answered here, please reach out to support.
Related Links

Feedback

 

Was this article helpful?


   

Feedback

Please tell us how we can make this article more useful.

Characters Remaining: 255