Just a quick opinion question. Regarding Git/Github version controlling from SFDC IDE's. I'm training some non git experienced consultants on how to use Git with SFDC Metadata. Personally I prefer to use Mavensmate/Sublime-Text + SourceTree (which is separate). For functional consultants who don't have a strong coding understanding do you think it would be better to just get them to use one IDE (E.g. Eclipse with E-Git).

Personally I have not used EGit and think SourceTree + Sublime-Text/Mavensmate work well but I thought I'd check the general opinion on this. The main consideration is that for the functional consultants who will be learning Metadata version controlling, would it be better to just get them to use one tool instead of two. I'm still thinking its best to avoid Eclipse + eGit.

What are the pros and cons of these approaches?

closed as primarily opinion-based by Sebastian Kessel, Dan Jones, Santanu Boral, battery.cord, Adrian Larson Jun 12 '17 at 16:45

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    In my personal opinion, it will be better to do training about metadata first, how is that stored, fetched and saved. and git training separately -- like what is git and how it is used. After that, there will be not a big difference between Mavensmate/Eclipse -- both are tools for metadata retrieve/save or SourceTree/EGit etc -- those are just UI clients – kurunve Jun 12 '17 at 15:28
  • 3
    This question seems broad and rather opinion based. – Adrian Larson Jun 12 '17 at 15:28
  • 2
    This might be too opinion based. As far as I can tell, you can use any IDE with any Git software. For example I use MavensMate with Sublime, the GitHub app and I use BitBucket (for the free, private repos. I am cheap). This really does come down to personal preference. There is no right or wrong answer. – Dan Jones Jun 12 '17 at 15:29

Simply put, there is no right answer (except this answer). Some developers find SourceTree+MavensMate+Sublime to be easy, some find Eclipse+Git to be easy. It really comes down to the preferred interface, which is definitely opinion-based. We considered several alternatives and ended up using Eclipse+Git for our solution, but it could have easily been SourceTree+MavensMate+Sublime, Cloud9, or IntelliJ.

In the end, what mattered was familiarity with a particular software (we all know Eclipse well), and to a lesser extent, cost (our solution was completely free except for the server we had to spin up to host GitLab), and also met our organization's security guidelines (no external source control systems for auditing purposes).

Your best bet is to simply have a Git repository on a server somewhere, and let the developers choose which tool they're most comfortable with. After all, Git is the common denominator and the files will always appear in the same general format, no matter which IDE that you use (and for those minor differences, people familiar with their tool of choice should know how to configure it to work with a standard Git repository).

  • One thing I like with SourceTree is that external Diff tools can be used in conjunction with the tool. For large files (e.g. Case.Object) the SourceTree built-in diff tool cannot cope with the size of the file while using an external diff tool makes it easier to manage changes. For E-Git does it have good Diff tools built in? – RedQueries Jun 12 '17 at 16:35
  • @FRed I've almost never had a situation where I needed an external tool, actually, and we have objects that are easily 20,000 lines of XML. That said, there are times you can get yourself in a situation where you need external tools, and Eclipse falls short there. But there's other ways of doing this, such as using git-diff after installing git for the CLI. Again, it really depends on the developer's familiarity with tools. One thing that helps is to standardize the repo. Having a messy repo is worse than your choice of tools. – sfdcfox Jun 12 '17 at 16:55
  • Hi sfdcfox, Some of our objects are very large. Case for example being 145,000 lines of code. Are you able to pull down metadata with record types, validation rules, weblinks, compact layouts etc in separate metadata files. These can be specified separately in a package xml file but end up wishing one single object file when retrieved. If the object file can be split on the above it would help reduce the file size for diff comparison's. Have you been able to keep objects to 20,000 with separate metadafiles for the above? – RedQueries Jun 13 '17 at 13:53
  • @FRed The metadata api supports multi-package configurations, but I don't know of any IDE that supports this configuration to date. However, you could build an Ant script to retrieve/deploy various sub-sections (e.g. weblinks) into different folders/files. Salesforce DX will make it easier for IDEs to support the kind of file system you're looking for (e.g. validation rules in one folder, weblinks in another), but all solutions like that today are custom/home-brew. – sfdcfox Jun 13 '17 at 14:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.