Version Control
Introduction to Version Control with Devin
Last updated
Introduction to Version Control with Devin
Last updated
Version control, at its core, is the practice of tracking and managing changes to software code. It's a foundational element in modern software development, allowing teams to document the evolution of their projects, revert to previous states when necessary, and collaborate more effectively. The importance of version control extends beyond mere change tracking; it fosters an environment where experimentation is encouraged, knowing that any undesired changes can be undone. It's crucial for managing complexity, ensuring reliability, and facilitating collaboration within development teams.
History and Accountability: It keeps a history of who made which changes and when, adding a layer of accountability and transparency to the development process.
Collaboration: Enables multiple developers to work on either individual or shared development files.
Risk Mitigation: Offers the ability to quickly revert to previous versions, reducing the risk of disruptions or significant setbacks in development.
Understanding the traditional challenges of implementing version control in Claris FileMaker, Devin introduces a streamlined, intuitive system for managing versions and branches. With the release of Devin 1.2, version control has been further enhanced by the Compare Versions feature, powered by our new XML Change Analysis API. This advanced tool allows developers to track changes between fmp12 files with unprecedented speed and detail, offering GitHub-style code diffs for scripts and custom functions. It marks a significant leap in simplifying and optimizing version control for FileMaker developers.
A branch in Devin acts as an isolated copy of a development file, named in the format <filename>_<branch>.fmp12
. Each project has a default branch that we call main
and the basic idea is that instead of making modifications directly to the main
file, we create new branches for different purposes. For instance, a branch for development could be called dev
.
Then, whenever we feel the dev
file is stable and tested enough (see Regression Testing), we can release it back to main
(or another branch). This way, main
will always represent the latest stable version of our development file.
In the Project Workspace's Modules tab, developers can see an overview of all files that are part of a project. Clicking on a file will show a visual graph of branch, version and release history performed by all team members.
Once you add a development file to a project (see Adding .fmp12 files to a project), a copy of the file will automatically be placed on the main
branch, named <filename>_main.fmp12
. The original development file without the branch name will not be used by Devin and can be deleted manually.
Devin manages version control by allowing developers to save versions of the branched fmp12
files as snapshots at various stages of development. These snapshots are the equivalent to git commits, except they are either clones or full backups of the branched file. The idea is that they act as key milestones or backups of stable stages of the file, offering a straightforward way to save backups, document progress and revert back to an earlier version if needed.
The Project Workspace's Branches view shows all versions for the selected branch.
The release process in Devin offers a method to integrate changes from any branch into another. Traditional merging, common in other development ecosystems where code changes from multiple branches are combined (like with git), isn't currently possible in FileMaker due to limitations in Claris technologies. Instead, Devin's release function simply replaces the target branch file with the file from the source branch.
In the Branches view, selecting a version opens a sidebar with more information about the snapshot and buttons to perform actions such as releasing the version to another branch.
While this approach does not yet support merging of branches, and thus the idea of working on parallel branches simultaneously, we're committed to enhancing these capabilities as soon as Claris technologies allow it. Until these capabilities are in place, it's recommended to designate a primary development branch as the central source of truth for your projects and use other branches for more temporary use cases such as testing or experimentation.