![]() The shape of a better solution should already be pretty clear. Any version control system that needs a large number of add-on tools and workaround processes to meet these requirements misses the mark for the enterprise. Modern product development requires us to store, revision, secure, and synchronize content across teams. The result is effectively another kind of Git sprawl, what we might call “IT sprawl,” as IT departments who embrace Git must learn, adopt, and support a variety of elements from the larger Git ecosystem. These needs - as well as those for more granular access control, synchronization, scalability, high availability, disaster recovery - add more extensions, tools, and processes to the picture in very short order. The need for secure hosting means you need to embrace a third-party solution or build your own. Storing many files or large files means you need to split your repos or perhaps host the large files externally. It doesn’t take long before that metaphorical weight meets or exceeds that of the original problems a version control system was supposed to solve. Each limitation of Git ineluctably burdens the enterprise with the weight of a corresponding workaround. These are only some of the challenges facing Git adoption in the enterprise, but they’re enough to establish a pattern, one that is overlooked surprisingly often. As with so many aspects of life, you get what you pay for, but even the paid offerings can’t magically dispel the limitations of the underlying tool. Free local hosting behind your own firewall usually means limited features and IT headaches. ![]() Free hosting in the cloud usually means limited space or privacy. ![]() ![]() These shortcomings explain the explosion of third-party hosting tools and services such as GitHub, GitLab, and Atlassian Stash, all of which may involve their own trade-offs. In other words, Git provides tools that can be used to ensure commits are correctly signed cryptographically by the individuals making them, but it doesn’t offer any options for locking down particular files, folders, branches, and so on via the usual access control lists or other mechanisms. These limitations stem from the fact that Git concerns itself only with authentication, leaving authorization to the file system. That works nicely for a variety of use cases, but it’s a recipe for ulcers in the enterprise. It requires no authorization, so anyone on the network can see or do anything. Git includes its own daemon for easy hosting, but such hosting is completely open. The idea is to store only a small “pointer” file in the actual repository, yet retrieve the large data when needed from a completely different system.Īnother set of challenges revolves around hosting so many repositories and protecting their content. Another is to store the larger files outside the repository itself, using a tool like the Git Large File Storage extension. Managing so many repos introduces its own problems and has unsurprisingly given rise to a variety of tools (such as git-annex) to tame such complexity. This is precisely what drives the phenomenon known as “Git sprawl,” or the tendency to break what should be one large repository into dozens, hundreds, or even thousands of smaller repos. Git repositories become so slow and unwieldy as they grow that the largest practical size is broadly recognized as being between 1GB and 2GB of content. The largest challenge Git faces in the enterprise arguably stems from its own limitations and performance problems when dealing with large numbers of files or very large files. The purpose of this article is to explain a few of the more salient challenges and their workarounds and to outline the shape of a better solution. Git has long been popular among developers, but attempts to make it work for the enterprise have evinced many challenges and spawned a variety of workarounds. As such, critical to success is having what agile devotees call a “single source of truth.” This means one and only one place where all of the product development content is stored, revised, secured, and synchronized, even when contributors are spread around the world. Art, design, prototyping, manufacturing, programming, and so forth all use different tools, yet need to work together more closely than ever before. That’s because modern product development is increasingly multidisciplinary, rapid, iterative, and geographically distributed. The road to product release is forked, twisted, and winding - anything but straight.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |