Ho affrontato lo stesso problema e ho trovato una soluzione. Ho prima aggiunto tutti i file al repository centrale (anche quelli per sviluppatori).
Quindi, se uno sviluppatore recupera i file dal repository, è presente anche la configurazione dello sviluppatore. Quando si apportano modifiche a questo file, Git non dovrebbe essere a conoscenza di queste modifiche. In questo modo le modifiche non possono essere inviate / salvate nel repository ma rimangono in locale.
Ho risolto questo utilizzando il comando git: update-index --assume-unchanged
. Ho creato un file bat che viene eseguito nella pre-compilazione dei progetti che contengono un file le cui modifiche dovrebbero essere ignorate da Git. Ecco il codice che ho inserito nel file 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
Nella mia pre-compilazione avrei effettuato una chiamata al file bat, ad esempio:
call "$(ProjectDir)\..\..\MakeFileBehaveLikeUnchangedForGit.bat" "$(ProjectDir)Web.config.developer" "$(SolutionDir)"
Ho trovato su SO un file bat che copia il file di configurazione corretto in web.config / app.config. Chiamo anche questo file bat nel file pre-compilato. Il codice per questo file bat è:
@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.
Nella mia pre-compilazione avrei effettuato una chiamata al file bat, ad esempio:
call "$(ProjectDir)\..\..\copyifnewer.bat" "$(ProjectDir)web.config.$(ConfigurationName)" "$(ProjectDir)web.config