Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to configure the temp file folder in git diff?

When calling git difftool in a repository, git compares the modified files in the local repository with their match in the remote. To do so, it creates a temporary file for the remote, sets the variables LOCAL and REMOTE and calls whichever tool is specified for diffs in git's config.

By default, the temporary file is created in /tmp/<hash>_filename. Is it possible to change this default location?

Why would you do that?

Long story short, I'm using git via windows subsystem for linux and I want to use a windows tool to do diff and merge. The problem is, /tmp is not accessible from the Windows side, so I'd need to move the default location where git creates temporary files to somewhere accessible by Windows.

What I tried:

So far, all I could find was a suggestion to sudo mount -B /tmp /mnt/c/tmp but this doesn't seem to work (/tmp still points to the same directory as before...)

like image 620
GPhilo Avatar asked May 09 '18 08:05

GPhilo


1 Answers

You can try setting the TMPDIR environment variable.

From the POSIX manual:

TMPDIR This variable shall represent a pathname of a directory made available for programs that need a place to create temporary files.


After a quick look at the git code (git/builtin/difftool.c), I don't think configuring the temp directory is currently supported:

/* Setup temp directories */
tmp = getenv("TMPDIR");
xsnprintf(tmpdir, sizeof(tmpdir), "%s/git-difftool.XXXXXX", tmp ? tmp : "/tmp");

Seems like git is taking the TMPDIR value, or "/tmp", if TMPDIR is not defined.

like image 136
sergej Avatar answered Sep 17 '22 23:09

sergej