







A syntax-aware git merge driver for a growing collection of programming languages and file formats.
weave — Merge without conflicts
Entity-level semantic merge driver for Git. Two agents edit different functions in the same file? Clean merge. Every time.
Structured merge with auto-tuning: balancing precision and performance
Software-merging techniques face the challenge of finding a balance between precision and performance. In practice, developers use unstructured-merge (i.e., line-based) tools, which are fast but imprecise. In academia, many approaches incorporate information on the structure of the artifacts being merged. While this increases precision in conflict detection and resolution, it can induce severe performance penalties. Striving for a proper balance between precision and performance, we propose a structured-merge approach with auto-tuning. In a nutshell, we tune the merge process on-line by switching between unstructured and structured merge, depending on the presence of conflicts. We implemented a corresponding merge tool for Java, called JDime. Our experiments with 8 real-world Java projects, involving 72 merge scenarios with over 17 million lines of code, demonstrate that our approach indeed hits a sweet spot: While largely maintaining a precision that is superior to the one of unstructured merge, structured merge with auto-tuning is up to 12 times faster than purely structured merge, 5 times on average.


Sublime Merge - Git client from the makers of Sublime Text
Blaze through your commits with Sublime Merge - available on Mac, Windows and Linux


A Categorical Theory of Patches
When working with distant collaborators on the same documents, one often uses a version control system, which is a program tracking the history of files and helping importing modifications brought by others as patches. The implementation of such a system requires to handle lots of situations depending on the operations performed by users on files, and it is thus difficult to ensure that all the corner cases have been correctly addressed. Here, instead of verifying the implementation of such a system, we adopt a complementary approach: we introduce a theoretical model, which is defined abstractly by the universal property that it should satisfy, and work out a concrete description of it. We begin by defining a category of files and patches, where the operation of merging the effect of two coinitial patches is defined by pushout. Since two patches can be incompatible, such a pushout does not necessarily exist in the category, which raises the question of which is the correct category to represent and manipulate files in conflicting state. We provide an answer by investigating the free completion of the category of files under finite colimits, and give an explicit description of this category: its objects are finite sets labeled by lines equipped with a transitive relation and morphisms are partial functions respecting labeling and relations.
The Git Commands I Run Before Reading Any Code
Five git commands that tell you where a codebase hurts before you open a single file. Churn hotspots, bus factor, bug clusters, and crisis patterns.

Code Repository - Git Source Control | Harness
Host Git repositories in Harness, manage pull requests, and connect every commit to secure CI/CD workflows with source-to-deploy traceability.

Unison | A friendly, statically-typed, functional programming language from the future · Unison programming language
A friendly programming language from the future.

Unison | A friendly, statically-typed, functional programming language from the future · Unison programming language
A friendly programming language from the future.

Solving Git's Pain Points with Jujutsu (with Martin von Zweigbergk)
Compiling Match Statements to Bytecode
Full pipeline deep dive for purple garden: AST, BB SSA IR, Bytecode, Optimisations
19:00 Uhr Live - Decent Code Collaboration Concepts after Git(Hub)
talks: "Introduction to the evening and tangled" - ligi "Radicle. The distributed code network." - Eleftherios "Code Collaboration Concepts with jj" - jan-erik and we end the night with a fireside ...
Decent Code Collaboration Concepts after Git(Hub)
Gregory Szorc's Digital Home | High-level Problems with Git and How to Fix Them
When Git first came onto the scene in the mid 2000's, I was initially skeptical because of its horrible user interface. But once I learned it, I appreciated its speed and features - especially the ease at which you could create feature branches, merge, and even create commits offline (which was a big deal in the era when Subversion was the dominant version control tool in open source and you needed to speak with a server in order to commit code). When I started using Git day-to-day, it was such an obvious improvement over what I was using before (mainly Subversion and even CVS).