2025-04-11 - 2025-10-11
Overview
11 releases published by 1 user
Release
v0.15.0
Mergiraf 0.15.0
Release
v0.14.0
Mergiraf 0.14.0
Release
v0.13.0
Mergiraf 0.13.0
Release
v0.12.1
Mergiraf 0.12.1
Release
v0.12.0
Mergiraf 0.12.0
Release
v0.11.0
Mergiraf 0.11.0
Release
v0.10.0
Mergiraf 0.10.0
Release
v0.9.0
Mergiraf 0.9.0
Release
v0.8.1
Mergiraf 0.8.1
Release
v0.8.0
Mergiraf 0.8.0
Release
v0.7.0
Mergiraf 0.7.0
175 pull requests merged by 16 users
Merged
#614 feat(rust): Add derive
attribute as commutative parent
Merged
#608 fix: preserve CRLF newlines in solve
and merge
commands
Merged
#607 fix(toml): Invalid signature for keys
Merged
#563 chore: Better error types for TreeBuilder
Merged
#602 perf: reduce the number of calls to git-check-attr
Merged
#604 chore(lang_profile): rm leftover function
Merged
#599 feat(Git): support reading language from git attributes
Merged
#597 docs: Further improvements to the tutorial to add a language
Merged
#590 feat(Python): Enable commutation of class attributes, with docstrings
Merged
#596 doc: update adding-a-language.md
Merged
#591 chore: Simplify pyproject language profile
Merged
#592 chore: Update dependencies
Merged
#582 feat: Support for pyproject.toml
Merged
#588 fix(AstNode::bundle_comments): don't bundle at A, // comment \n B
Merged
#527 tests: Utility to minimize test cases, continued
Merged
#585 fix(typescript): Bad handling of semicolons in commutative merging of class bodies
Merged
#587 fix: Reject parse trees with missing nodes
Merged
#576 feat: bundle comments into nodes they annotate
Merged
#583 feat: Install via cargo binstall
Merged
#568 feat: Recover from commutative merging failures
Merged
#580 chore: Update crate dependencies
Merged
#579 chore: Update to Rust 1.89
Merged
#578 fix: Panic in unicode boundary checking code
Merged
#575 feat(merge,solve): create the debug dir if not present
Merged
#574 refactor(AstNode): replace UnsafeCell
s with Cell
s
Merged
#572 Minimal CMake support
Merged
#566 governance: Make mathstuf a developer
Merged
#571 chore: Add AstNode::succeeding_whitespace()
Merged
#561 fix: Switch from grammar_name
to kind
Merged
#569 refactor: return _exactly_ a Conflict
from TreeBuilder::build_conflict
Merged
#562 fix: Prevent the commutative merging of all extra
elements
Merged
#567 feat: add some signatures for children of commutative parents
Merged
#560 fix(Rust): mark comments as atomic
Merged
#559 misc(merged_text): clean-up and comments
Merged
#555 refactor(merge): leak
in fewer places
Merged
#557 Switch to tree-sitter-dart-orchard
Merged
#558 fix(AstNode::parse
): respect char boundaries of source
when informing about a parse error
Merged
#509 feat: Add support for starlark.
Merged
#546 chore: Switch to tree-sitter-java-orchard
Merged
#536 perf(mgf_dev): Speed up commutative isomorphism via hashing
Merged
#543 fix(ast): correct byte_range for empty injections
Merged
#550 test(ast): improve legibility of source
strings
Merged
#549 refactor: get rid of some Option/Result::and_then
s
Merged
#544 ci: Fix cargo install git-cliff
with --locked
Merged
#547 chore(changelog): add commit ids to log entries without names
Merged
#548 chore: Update dependencies
Merged
#541 feat: add a Cargo feature for mgf_dev
-specific functionality
Merged
#542 feat(ParentType): make Display
less verbose in the common case
Merged
#539 chore(cargo/aliases): run mgf_dev compare
in release mode
Merged
#538 refactor(MultiMap): clean-up trait bounds
Merged
#535 feat(parse): add an option to limit tree depth
Merged
#533 fix(postprocess/merge_same_sigs): use the revisions that the node is actually known to be in
Merged
#531 feat(TypeScript): commutative merging for union and intersection types
Merged
#523 feat: Distinguish between exact and inexact initial matchings
Merged
#530 refactor(tests): Inline all language-specific parse methods
Merged
#529 chore: Print line numbers when reporting a syntax error
Merged
#528 chore: Highlight new contributors in release notes
Merged
#510 feat: Add support for GNU Make
Merged
#526 perf(ParsedMerge::is_empty): don't render the whole merge just to see if it's empty
Merged
#525 refactor: Simplify ParsedMerge::rev_range_to_merged_range
Merged
#524 fix(tests): correct python/working/__all__ case
Merged
#519 chore(deps): no longer pull in cc
Merged
#518 refactor(fallback_to_git_merge_file): some minor clean-up
Merged
#517 refactor(mgf_dev): only match on args.command
once
Merged
#499 dev: add cargo shortcuts for the subcommands of mergiraf
and mgf_dev
Merged
#488 feat(Haskell): More commutative parents and signatures
Merged
#522 feat(Python): merge decorated methods and inner classes
Merged
#513 fix: improve detection of Jujutsu usage
Merged
#512 tests: Minimal environment when invoking git
Merged
#514 switch to tree-sitter-systemverilog
Merged
#515 chore(flake): update
Merged
#508 doc: use XDG paths for git directories
Merged
#506 test(lang_profile): introduce helper to reduce (some) boilerplate
Merged
#505 fix(rust): add signature to self
in use_declaration
Merged
#504 doc: update rotten link
Merged
#502 refactor(RevisionSet): misc changes to iter
and any
Merged
#501 refactor(RevisionNESet): use impl Deref<Target=RevisionSet>
instead of forwarding methods
Merged
#500 chore(lints): also enable in mgf_dev
Merged
#498 refactor(MergedTree): take &Leader
in methods to avoid derefs
Merged
#497 refactor: add submodules to merged_tree.rs
Merged
#493 fix: Include full filenames in languages list
Merged
#496 chore(cli/solve): make --keep
a hidden alias of --stdout
Merged
#495 refactor: move priority_list
to under tree_matcher
Merged
#494 ci: Fix crates.io upload
Merged
#483 chore: Update dependencies
Merged
#490 fix: Language detection by full filenames
Merged
#486 chore: Update testing helpers to support test cases without extensions
Merged
#468 ci: Use Docker image with Rust already installed
Merged
#481 fix: Escape newlines in ascii art representation of trees
Merged
#480 fix: Ignore empty nodes in AstNode::isomorphic_to_source
Merged
#476 feat: Support for go.sum
files
Merged
#477 tests: Add missing tests for go.mod
support
Merged
#478 chore(go.mod): Update parser to 0.4.0
Merged
#472 test: reorganize parsed_merge
tests
Merged
#473 misc
Merged
#474 feat: Support for go.mod
files
Merged
#475 tests: Update helpers to support explicit language setting
Merged
#471 chore: warn of default_trait_access
Merged
#465 feat: Support specifying full file names in language profiles
Merged
#470 refactor: use let-chains all over the place
Merged
#459 fix(PHP): Don't commutatively merge comments in declaration_lists
Merged
#464 tests: Specify the language via a dedicated file
Merged
#438 chore: Add CONTRIBUTING.md
Merged
#462 fix: Check for Jujutsu repo at conflict location
Merged
#458 chore: Move mgf_dev to a separate package
Merged
#455 fixup: Add missing string signature to avoid duplicate elements in Python's __all__
Merged
#457 ci: Remove extra newlines between changelog items
Merged
#454 feat(Haskell): let type classes commute in 'deriving' tuples
Merged
#453 feat: Defining commutative parents by tree-sitter queries
Merged
#446 doc(usage): decribe merge results in example-repo
Merged
#452 prepare for #448
Merged
#433 ci: automate the release process
Merged
#447 chore: Update tree-sitter-rust-orchard to 0.10.0
Merged
#445 chore: Make sure tests pass independently from the environment
Merged
#444 chore: fix formatting for CI to pass again
Merged
#442 flake: update
Merged
#434 feat: resolve file revisions from git commits
Merged
#435 chore: Update Rust grammar to 0.7
Merged
#423 Improve error reporting when working copy is not in a conflict state
Merged
#428 feat(Rust): Support reordering declarations with attributes
Merged
#431 feat(Haskell): Make record updates commutative and add signatures
Merged
#432 doc(usage): fix typo
Merged
#429 feat: Haskell support
Merged
#430 doc: Small improvements to "Adding a language"
Merged
#427 feat: init Elixir support
Merged
#426 Add OCaml support
Merged
#424 Call checkout-index just once per file
Merged
#421 fix: Be more careful when trimming newlines around the end of nodes
Merged
#404 feat: Add INI support
Merged
#210 feat: support hcl
Merged
#408 fix: Preserve initial whitespace before the first child
Merged
#384 docs: Recommend to use '* merge=mergiraf'
Merged
#403 feat: Support for nested languages
Merged
#396 feat: Initial Markdown support
Merged
#400 chore: Refactor AstNode
creation
Merged
#401 fix: helpers/inspect.sh
Merged
#402 perf: Avoid filling up MergedText with empty strings
Merged
#399 fix(rust): Signature for scoped_identifier
Merged
#395 chore: Remove Ast struct
Merged
#397 chore: Small improvements to test helpers
Merged
#393 chore: Generate our own node ids instead of reusing tree-sitter's
Merged
#392 chore: Upgrade dependencies
Merged
#394 chore: Adapt AstNode / MergedTree isomorphisms to care about languages
Merged
#386 refactor: Store a reference to LangProfile in each AstNode
Merged
#391 Fix: Update zip to v3.0.0
Merged
#389 tests: Add failing case for Python argument lists
Merged
#387 refactor: Reduce duplication in AstNode::internal_new
Merged
#381 tests: Re-run if examples/ directory changed
Merged
#383 chore(deps): update tree-sitter-rust
to 0.24
Merged
#380 fix: Handling of quoted strings in YAML
Merged
#374 feat: Specify different separators for each children group of a commutative parent
Merged
#378 tests: Add cases for Rust use statement matching
Merged
#371 fix: Avoid displaying spurious conflicts
Merged
#377 fix: Restrict commutativity of initializer_list in C/C++
Merged
#372 tests: Mark cpp/lack_of_conflict test as working
Merged
#376 fix: Writing changeset to debug dir
Merged
#375 fix: Restrict commutativity in C#
Merged
#368 fix: Check that the merged text is syntactically valid and consistent with the merged tree
Merged
#362 fix: Handling of duplicate signatures in base revision
Merged
#367 fix: Don't match nodes of different types
Merged
#366 chore: Use representative from correct revision in conflicts
Merged
#359 refactor(AstNode::truncate): don't force &
before predicate
Merged
#360 misc
Merged
#365 feat: even more c++ file extensions (#364)
Merged
#327 feat: manual language selection
Merged
#358 docs: explain why we allow creating MixedTree
s without children
Merged
#332 governance: Add senekor to the Developers team
Merged
#331 doc: advise to use diff3 conflict style
Merged
#330 feat: detect zdiff3-style conflicts
Merged
#329 perf: avoid calling Matching::add
in a loop
Merged
#328 perf: make DfsIterator
exact-sized
Merged
#323 refactor: return ParsedMerge
from line_based_merge
Merged
#324 refactor: rename tree.rs
to ast.rs
Merged
#297 refactor(lib): extract logic for mergiraf {merge,solve}
out into separate modules
Merged
#318 feat(mergiraf solve): improve error output for jj users
5 pull requests proposed by 2 users
Proposed
#507 test(supported_langs): check that commutative parents' children all have signatures defined
Proposed
#516 WIP: feat(cli): add a subcommand for getting the shell completions file
Proposed
#537 WIP: tests: Utilities to benchmark mergiraf on large corpora
Proposed
#611 fix(merged_tree): introduce cycle detection to mitigate a comment bundling bug
Proposed
#615 fix(merge): Don't fail if the revisions contain stray conflict markers
55 issues closed from 20 users
Closed
#605 feature/rust: Mark derive
macros as commutative
Closed
#581 DOS line endings (CRLF) silently turn into Unix (LF)
Closed
#606 toml: Spurious duplicate signature
Closed
#594 Makefile parse error
Closed
#589 feat: Support bundling Python docstrings on attributes
Closed
#564 DisplaySettings
: remove diff3
?
Closed
#314 Tracking Issue for go/field_with_trailing_comment
Closed
#586 bug: Incorrect comment bundling after a separator
Closed
#456 Test case minimizer
Closed
#554 Parsing issues are not detected for MISSING
tokens
Closed
#322 Tracking Issue: Attributes and docstrings are not attached to the elements they annotate
Closed
#577 Update the docker image to include Rust 1.89.0
Closed
#573 Incorrect merge of import type and non-type import statements
Closed
#242 Mergiraf meetup in Germany in 2025
Closed
#467 Exclude commutatively merging of comments by default
Closed
#450 Fuzzing infrastructure for Mergiraf
Closed
#534 Faster commutative isomorphism
Closed
#532 Panic at src/ast.rs:703:25: byte index 18446744073709548319 is out of bounds of ``
Closed
#521 Panic: Revision set for ExactTree inconsistent with class mapping
Closed
#484 Commutative merging of binary operators
Closed
#139 rust use
statement getting duplicated during conflicts
Closed
#491 Language support for Makefiles
Closed
#503 Rust: duplicate self
in use_declaration
s
Closed
#492 mergiraf languages
doesn't list go.mod/sum file patterns
Closed
#461 go.mod / go.sum support
Closed
#37 Unexpected file changes and git access
Closed
#11 Support selecting the language by matching on the entire file name
Closed
#439 Move mgf_dev to a separate package
Closed
#448 Allow defining commutative parents using tree-sitter queries
Closed
#443 Python: support commutatively merging the __all__
declarations
Closed
#441 json file in example repo is not successfully merged
Closed
#440 Add .cc as a supported extension for C/C++
Closed
#419 Markdown: Panic in AstNode::preceding_identation
Closed
#407 Lack of preservation of leading whitespace in merges
Closed
#244 Can't build 0.6.0 using the flake
Closed
#57 Upgrading to a new version requires adding the new languages to .gitattributes
Closed
#5 Support for nested languages
Closed
#385 Submission at the Git Merge conference
Closed
#398 Rust: missing signature definition in use statements
Closed
#390 Dependecy zip v2.5.0 has been yanked
Closed
#379 Bad merge for YAML conflict with double-quoted string
Closed
#279 Tracking Issue for spork/both_modified_multiple_method_ordering_conflicts
Closed
#251 Tracking Issue for java/annotations
Closed
#356 Spurious conflicts with identical sides
Closed
#262 Bad merge in C++
Closed
#311 Tracking Issue for cpp/lack_of_conflict
Closed
#369 Writing debug files fails with "Bad file descriptor"
Closed
#224 Mangling of whitespace/comment lines in C# file occurring during rebase and cherry-pick
Closed
#320 Check the syntactic validity of conflict-free merges by parsing the output
Closed
#361 Duplicate signature detection messes up JSON syntax
Closed
#364 Even more C++ extensions
Closed
#34 Allow to specify language
Closed
#319 Error while resolving conflicts: parse error
Closed
#265 Tracking Issue for rust/docstrings
Closed
#310 Tracking Issue for cpp/method_conflict_with_comments
72 issues created by 9 users
Opened
#322 Tracking Issue: Attributes and docstrings are not attached to the elements they annotate
Opened
#325 Mark all strings as atomic
Opened
#333 No encodings supported other than utf-8?
Opened
#356 Spurious conflicts with identical sides
Opened
#357 Plug-in system for language profiles
Opened
#361 Duplicate signature detection messes up JSON syntax
Opened
#364 Even more C++ extensions
Opened
#369 Writing debug files fails with "Bad file descriptor"
Opened
#370 Store test cases as files with conflicts instead of Base, Left, Right files
Opened
#373 Imitate separators from non-conflicting parts when merging commutatively
Opened
#379 Bad merge for YAML conflict with double-quoted string
Opened
#385 Submission at the Git Merge conference
Opened
#388 Bad merge due to mismatched empty argument lists in Python
Opened
#390 Dependecy zip v2.5.0 has been yanked
Opened
#398 Rust: missing signature definition in use statements
Opened
#406 Switch to the "GumTree Simple" matching algorithm
Opened
#407 Lack of preservation of leading whitespace in merges
Opened
#419 Markdown: Panic in AstNode::preceding_identation
Opened
#436 Incorrect delete/modify conflict resolution in Javascript
Opened
#437 Incorrect matching of method calls in Go
Opened
#439 Move mgf_dev to a separate package
Opened
#440 Add .cc as a supported extension for C/C++
Opened
#441 json file in example repo is not successfully merged
Opened
#443 Python: support commutatively merging the __all__
declarations
Opened
#448 Allow defining commutative parents using tree-sitter queries
Opened
#449 Documentation: don't force users to use diff3
Opened
#450 Fuzzing infrastructure for Mergiraf
Opened
#451 New language: bash
Opened
#456 Test case minimizer
Opened
#460 Known uses of mergiraf
Opened
#461 go.mod / go.sum support
Opened
#466 Display some (temporary?) text when Mergiraf takes a long time to merge a file
Opened
#467 Exclude commutatively merging of comments by default
Opened
#482 mergiraf solve
fails to resolve any conflicts when file contains multiple conflicts
Opened
#484 Commutative merging of binary operators
Opened
#485 Broader test suite for benchmarks
Opened
#487 Auto-completion for the CLI
Opened
#489 Validation of language profiles in tests
Opened
#491 Language support for Makefiles
Opened
#492 mergiraf languages
doesn't list go.mod/sum file patterns
Opened
#503 Rust: duplicate self
in use_declaration
s
Opened
#511 Mergiraf: You seem to be using Jujutsu instead of Git.
Opened
#520 Panic when one of the files to merge contains conflicts in diff2 format
Opened
#521 Panic: Revision set for ExactTree inconsistent with class mapping
Opened
#532 Panic at src/ast.rs:703:25: byte index 18446744073709548319 is out of bounds of ``
Opened
#534 Faster commutative isomorphism
Opened
#540 Java: incorrect singature for methods with an integral spread parameter
Opened
#545 bug: Insufficient delete/modified conflict detection in commutative merging
Opened
#551 Syntactically invalid files are attempted to be parsed twice
Opened
#552 Better error types
Opened
#554 Parsing issues are not detected for MISSING
tokens
Opened
#556 panic: More than 2 conflicting sides
Opened
#564 DisplaySettings
: remove diff3
?
Opened
#570 Meeting up at FOSDEM 2026
Opened
#573 Incorrect merge of import type and non-type import statements
Opened
#577 Update the docker image to include Rust 1.89.0
Opened
#581 DOS line endings (CRLF) silently turn into Unix (LF)
Opened
#586 bug: Incorrect comment bundling after a separator
Opened
#589 feat: Support bundling Python docstrings on attributes
Opened
#593 Allow falling back to zdiff3
Opened
#594 Makefile parse error
Opened
#595 New language: Clojure and EDN (LISP)
Opened
#600 Migrate to the threeway_merge crate?
Opened
#601 Rust: imports with the same signature not recongized as such
Opened
#603 bug: merge
cannot solve a conflict that solve
can
Opened
#605 feature/rust: Mark derive
macros as commutative
Opened
#606 toml: Spurious duplicate signature
Opened
#609 Stack Overflow
Opened
#610 Ignore files marked as linguist-generated=true
Opened
#612 C: Doesn't deal with macro nonsense
Opened
#613 Commutative merging when the commutative parent is absent from the base revision
Opened
#616 Bug in derive
commutativity
9 unresolved conversations
Open
#309
Tracking Issue for Tracking Issues
Open
#102
Add option to accept merging files with syntax errors
Open
#249
Way to add commutative parent at runtime?
Open
#144
Use release-plz to automate the release process
Open
#241
The instructions for registering mergiraf
as a merge driver do not work properly on Powershell or CMD.exe (at least on Windows)
Open
#214
Feature request: support patch workflows for interactive mergiraf solve
Open
#66
How to review mergiraf solve
result?
Open
#125
WIP: feat: GDScript/Godot Resources
Open
#196
Roadmap?