InterSystems Official
· Dec 4

New and Upcoming Embedded Git features

It's been a while since I've posted about Embedded Git on the Developer Community, and I'd like to provide an update on the massive amount of work we've done this year and where we're going next.

Context

If you're building solutions on IRIS and want to use Git, that's great! Just use VSCode with a local git repo and push your changes out to the server - it's that easy.

But what if:

  • You're collaborating with other developers on a shared, remote development environment and want to avoid stepping on each others' toes by editing the same file at the same time
  • You're using editors based in the management portal for interoperability or business intelligence and want straightforward source control for your work - even in a local container
  • You're still using Studio for some things and/or occasionally jump back there from VSCode; or your team has not yet fully embraced VSCode, and some team members still want to use Studio while others use VSCode
  • You're working on a bunch of separate projects at the same time in the same namespace - say, several packages defined using the InterSystems Package Manager - and want to just work with all of them from one isfs editing view (rather than a bunch of distinct projects) with changes tracked in the proper local git repo automatically

In any of these cases, you really need embedded source control. You might have heard this called "server-side source control" or "source control hooks" - it's all the same thing, and means that there is consistent source control behavior across all editors, both IDE and graphical editors, on an IRIS instance. All of this works against a source control repository colocated with your IRIS instance, which might be on a remote server, your own machine, or even in a container.

If you want to get started with embedded source control using Git, Embedded Git (https://github.com/intersystems/git-source-control) is the place to start. This is not an InterSystems-supported product, but it has significant backing from my team (Application Services) within InterSystems and a broad user community. PRs and GitHub issues are always welcome, and we monitor Developer Community activity (especially using the relatively new "Embedded Git" tag).

Embedded Git in 2024

At the beginning of the year, I would have recommended Embedded Git for more-technical users already comfortable with Git and willing to get into the weeds when needed. Now I'd wholeheartedly recommend it for anyone. As some representation of the effort we've put into the tool, and the crazy advancement we've see in 2024, here's a graph of our commit volume over the past few years:

If you want to see what we've been up to, you can check out Releases or our Changelog, but here's a summary of the high points:

  • In July, we added a "Basic Mode" described here with a "Sync" operation that simplifies a pull/commit/rebase/push workflow that we recommend in general, but especially for people less familiar with Git.
  • Across multiple releases, we made it seamless to have git pull and checkout operations - really, anything that modifies the state of the Git repo - seamlessly sync back into IRIS so that everything is kept up to date without needing to forcibly reload the whole codebase.
  • Our September release made it super easy to set up an isfs connection by downloading a VSCode workspace file from the management portal.
  • Our November release made it possible to configure much more through the extension's settings page rather than needing to run commands in Terminal and added intelligent merge conflict resolution for the two most common (near-guaranteed) use cases in an interoperability setting.
  • Along with all of these, we've resolved dozens of minor bugs and usability issues, streamlined navigation through the Management Portal, and added many smaller features to streamline interoperability use cases and collaboration across multiple developer-specific namespaces on a shared, remote instance (which we see and recommend as a common approach).

Coming Soon

Our next release (2.8.0), expected within the next two weeks, will include a feature we've been working on for months - "Production Decomposition". The interoperability production is typically source controlled as a single file, which leads to concurrency issues because only one person can edit the production at a time. There are also near-guaranteed merge conflicts in shared development environments, and while we can resolve these intelligently, they're likely to continue to come up in certain branch workflows. With Production Decomposition, each business host (service, process, or operation) is represented in source control as a single file. If you're interested in trying this out, let us know!

We'll be keeping the momentum up on Embedded Git going into 2025, with a focus on additional authentication methods and support for other common deployment patterns. You can see the rough plan in our 2025 H1 Milestone (which will encompass a few releases; we generally release minor versions monthly and patch versions as needed for key bugfixes).

If you're interested in learning more / keeping pace with development as it happens, we have a weekly stakeholder meeting on Fridays that you would be welcome to join. This also ends up serving as a sort of "office hours" for Embedded Git in general. Feel free to drop me a message with your email address and I'll invite you.