Overview:
Configuration management of software source files and circuit design files used at Champlin Technologies LLC in the development of our mobile apps, electronic circuits, and websites is performed with the Git framework using Git-Flow as the workflow model and SourceTree as the software tool.
Git:
Git is a modern system for distributed version control of source and design files as they change over time. Git has been called the “Swiss army knife” of version control. We chose Git based on its two essential and powerful versioning features: instant branching/merging capability and distributed model. As the top diagram indicates, Git is a distributed version control system. As such, every Git directory on every computer is a full-fledged local repository with complete history and full version tracking abilities, independent of network access or a central server. This is the key feature that enables remote repositories on github and still manage versions completely on local repositories.
These features lead to the file lifecycle shown in the following diagram. It clearly shows the independence of local and remote repositories. The other key item in the lifecycle is the concept of a staging step.
Git-Flow:
Git-Flow is a branching Git workflow model published by Vincent Driessen. This branching model, shown below, defines an organizational structure for development and release processes that allows a team of developers to follow a common workflow. Git-Flow implements a structured workflow that includes branches for master, development, feature, release, and hotfixes. Although there are many ways to manage workflows using Git, this structured approach appeals to us at Champlin Technologies LLC.
Github:
Github is a web-based framework for creating remote repositories, either public or private. Github has provided an amazing resource for software development teams worldwide.
Bitbucket:
Like GitHub, Bitbucket is a web-based version control remote repository hosting service, owned by Atlassian, for Git-managed source code and development projects. Both GitHub and Bitbucket provide unlimited free public remote repositories. However, Github doesn’t provide any free private repositories whereas Bitbucket provides unlimited free private repositories.
Pro Git:
As one of the gurus behind GitHub, Scott Chacon is a recognized and respected expert on Git. As this book, Pro Git, demonstrates, Scott Chacon is also great at conveying that information clearly with instructive diagrams and well-written descriptions. The diagrams are especially helpful with understanding the concepts of distributed (snapshots, not differences) version control systems, file status lifecycle, and mechanisms for branch management (create, merge, delete). Best practices are mentioned throughout the book. This book takes the reader progressively from a novice user to an admin level of knowledge. Kudos to Scott Chacon on creating an indispensable Git guide and reference book!
Sourcetree:
SourceTree is an app that provides a highly informational GUI front-end to Git with functionality to support Git-Flow process workflows. Although one stills needs to understand how Git works under-the-hood and be fluent on the command line, the amount of information displayed on the SourceTree app makes it easier to see the workflow during development and initial/maintenance releases.
Tutorial:
Atlassian has provided a well-written tutorial on setting up and using SourceTree and Bitbucket.