Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免由于Makefile中的每用户设置而导致的git合并冲突_Git_Makefile_Merge Conflict Resolution - Fatal编程技术网

避免由于Makefile中的每用户设置而导致的git合并冲突

避免由于Makefile中的每用户设置而导致的git合并冲突,git,makefile,merge-conflict-resolution,Git,Makefile,Merge Conflict Resolution,我的git管理的项目在不同的主机上运行。 项目的依赖项(包括目录、第三方库;但这些依赖项不足以保证autoconf的强大功能)在每台主机上的位置不同。 因此,项目的makefile包含每个主机上不同的设置。例如: FST_DIR=/usr/local/include FST_DIR=/home/user12345/openFST/src/include FST_DIR=/home/user67890/tmp/include 当Igit merge时,有什么好方法可以阻止这些差异不断引起冲突?只

我的git管理的项目在不同的主机上运行。 项目的依赖项(包括目录、第三方库;但这些依赖项不足以保证autoconf的强大功能)在每台主机上的位置不同。 因此,项目的makefile包含每个主机上不同的设置。例如:

FST_DIR=/usr/local/include
FST_DIR=/home/user12345/openFST/src/include
FST_DIR=/home/user67890/tmp/include
当I
git merge
时,有什么好方法可以阻止这些差异不断引起冲突?只需将这些设置移动到它们自己的文件中,包括在makefile中,git会忽略它们吗?(如果是这样,当新手第一次尝试制作时,文件丢失了,会发生什么情况?)


(如果没有git或makefiles,也可能存在类似的问题。例如,一个Visual Studio项目,在多台PC上开发,每个PC都有自己的配置。)

是的,将配置移动到git忽略的include makefile

当文件不存在以处理“新用户”问题时,可以让make提示用户输入文件中所需的值

像这样的

include config.mk

config.mk:
        @echo 'Configuration file $@ not found. Creating...'
        @printf 'Value to set for FST_DIR: '; IFS= read -r dir && [ -n "$$dir" ] && printf 'FST_DIR=%s\n' "$$dir" > $@

由于它是特定于用户的,因此最好将此类设置存储在本地(或用户配置文件中),例如环境变量。然后makefile可以检查它是否存在并且有效,否则返回默认位置,如果仍然失败,则返回错误消息,要求用户配置它(当然,还提供说明)。