From: Matt Turner Date: Thu, 24 Dec 2020 04:47:22 GMT Subject: Re: [RFC PATCH gentoolkit] bin: Add merge-driver-ekeyword Message-ID: In-Reply-To: On Wed, Dec 23, 2020 at 2:46 PM Junio C Hamano wrote: > > Matt Turner writes: > > > I want to handle conflicts automatically on lines like > > > >> KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" > > > > where conflicts frequently happen by adding/removing ~ before the > > architecture names or adding/removing whole architectures. I don't > > know if I should use a custom git merge driver or a custom git merge > > strategy. > > A merge strategy is about how the changes at the tree level are > handled. A merge driver is given three blobs (original, your > version, and their version) and comes up with a merged blob. > > In your case, you'd want a custom merge driver if you want to handle > word changes on a single line, because the default text merge driver > is pretty much line oriented. Thanks, that makes sense. The merge driver I've written seems to work great for handling the KEYWORDS=... line. If users could more simply opt into using it (e.g., on the command line rather than enabling it via ~/.gitattributes) I think it would be fine to use. Better yet, is there a way git can be configured to fallback to another merge driver if the first returns a non-zero status due to unresolved conflicts? For example, if there are changes to other lines, how can I fall back to another merge driver? Thank you for your advice!