Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GIT-LFS-MERGE-DRIVER(1)				       GIT-LFS-MERGE-DRIVER(1)

NAME
       git-lfs-merge-driver - Merge text-based LFS files

SYNOPSIS
       git lfs merge-driver [options]

DESCRIPTION
       Merge text files	stored in Git LFS using	the default Git	merge
       machinery, or a custom merge driver if specified. Note that this, in
       general,	does not support partial renames or copies because Git does
       not support them	in this	case.

       This program is intended	to be invoked automatically by Git and not by
       users manually. See CONFIGURATION for details on	the configuration
       required	for that.

OPTIONS
       --ancestor <path>
	   Specify the file containing the ancestor revision.

       --current <path>
	   Specify the file containing the current revision.

       --marker-size <num>
	   Specify the conflict	marker size as an integer.

       --other <path>
	   Specify the file containing the other revision.

       --program <program>
	   Specify a command, which is passed to the shell after substitution,
	   that	performs the actual merge. If this is not specified, git
	   merge-file is invoked with appropriate arguments to perform the
	   merge of the	file.

	   See CONFIGURATION for the sequences which are substituted here.

CONFIGURATION
       Git allows the use of a custom merge driver for files based on the
       merge attribute set in .gitattributes. By default, when using git lfs
       track, this value is set	to lfs.

       Because Git LFS can be used to store both text and binary files and it
       isn't always clear which	behavior should	be used, Git LFS does not
       enable this merge driver	by default. However, if	you know that some or
       all of your files are text files, then you can set the merge attribute
       for those files to lfs-text and use git config to set the merge driver
       like so:

	   $ git config	merge.lfs-text.driver 'git lfs merge-driver --ancestor %O --current %A --other %B --marker-size	%L --output %A'

       This tells Git to invoke	the custom Git LFS merge driver, which in turn
       uses Git's merge	machinery, to merge files where	the merge attribute is
       set to lfs-text.	Note that lfs-text here	is an example and any
       syntactically valid value can be	used.

       If you are using	a special type of file that needs rules	different from
       Git's standard merge machinery, you can also specify the	--program
       option, which is	passed to sh after substituting	its own
       percent-encoded escapes:

          %A: the current version

          %B: the other version

          %D: the destination version

          %O: the ancestor version

          %L: the conflict marker size

       Note that the percent sign must typically be doubled to prevent Git
       from substituting its own values	here. Therefore, specifying the
       default behavior	explicitly looks like this:

	   $ git config	merge.lfs-text.driver \
	     'git lfs merge-driver --ancestor %O --current %A --other %B --marker-size %L --output %A --program	'\''git	merge-file --stdout --marker-size=%%L %%A %%O %%B >%%D'\'''

       The exit	status from the	custom command should be zero on success or
       non-zero	on conflicts or	other failure.

       Note that if no merge driver is specified for the value of the merge
       attribute (as is	the case by default with merge=lfs), then the default
       Git merge strategy is used. For LFS files, this means that Git will try
       to merge	the pointer files, which usually is not	useful.

SEE ALSO
       git-merge(1), git-merge-file(1),	gitattributes(5)

       Part of the git-lfs(1) suite.

				  1979-11-30	       GIT-LFS-MERGE-DRIVER(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=git-lfs-merge-driver&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help