J'ai fait face au même problème et j'y ai trouvé une solution. J'ai d'abord ajouté tous les fichiers au référentiel central (également ceux des développeurs).
Donc, si un développeur récupère les fichiers du référentiel, la configuration du développeur est également là. Lors de la modification apportée à ce fichier, Git ne doit pas être conscient de ces modifications. De cette façon, les modifications ne peuvent pas être poussées / validées dans le référentiel mais rester localement.
Je résolu ce problème en utilisant la commande git: update-index --assume-unchanged
. J'ai créé un fichier bat qui est exécuté dans la préconstruction des projets qui contiennent un fichier dont les modifications doivent être ignorées par Git. Voici le code que j'ai mis dans le fichier bat:
IF NOT EXIST %2%\.git GOTO NOGIT
set fileName=%1
set fileName=%fileName:\=/%
for /f "useback tokens=*" %%a in ('%fileName%') do set fileName=%%~a
set "gitUpdate=git update-index --assume-unchanged"
set parameter= "%gitUpdate% %fileName%"
echo %parameter% as parameter for git
"C:\Program Files (x86)\Git\bin\sh.exe" --login -i -c %parameter%
echo Make FIleBehaveLikeUnchangedForGit Done.
GOTO END
:NOGIT
echo no git here.
echo %2%
:END
Dans mon pré-build, je ferais un appel au fichier bat, par exemple:
call "$(ProjectDir)\..\..\MakeFileBehaveLikeUnchangedForGit.bat" "$(ProjectDir)Web.config.developer" "$(SolutionDir)"
J'ai trouvé sur SO un fichier chauve-souris qui copie le fichier de configuration correct dans le web.config / app.config. J'appelle également ce fichier chauve-souris dans la pré-construction. Le code de ce fichier bat est:
@echo off
echo Comparing two files: %1 with %2
if not exist %1 goto File1NotFound
if not exist %2 goto File2NotFound
fc %1 %2
if %ERRORLEVEL%==0 GOTO NoCopy
echo Files are not the same. Copying %1 over %2
copy %1 %2 /y & goto END
:NoCopy
echo Files are the same. Did nothing
goto END
:File1NotFound
echo %1 not found.
goto END
:File2NotFound
copy %1 %2 /y
goto END
:END
echo Done.
Dans mon pré-build, je ferais un appel au fichier bat, par exemple:
call "$(ProjectDir)\..\..\copyifnewer.bat" "$(ProjectDir)web.config.$(ConfigurationName)" "$(ProjectDir)web.config