Aynı problemle karşılaştım ve ona bir çözüm buldum. Önce tüm dosyaları merkezi depoya ekledim (ayrıca geliştiriciler de).
Dolayısıyla, bir geliştirici dosyaları depodan alırsa, geliştirici yapılandırması da oradadır. Bu dosyada değişiklik yapılırken Git bu değişikliklerin farkında olmamalıdır. Bu şekilde değişiklikler arşive gönderilemez / kaydedilemez, ancak yerel olarak kalır.
Ben git komutunu kullanarak çözdü: update-index --assume-unchanged
. Değişiklikleri Git tarafından göz ardı edilmesi gereken bir dosya içeren projelerin ön yapısında çalıştırılan bir bat dosyası yaptım. İşte yarasa dosyasına koyduğum kod:
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
Ön oluşturmamda yarasa dosyasına bir çağrı yapardım, örneğin:
call "$(ProjectDir)\..\..\MakeFileBehaveLikeUnchangedForGit.bat" "$(ProjectDir)Web.config.developer" "$(SolutionDir)"
SO'da doğru yapılandırma dosyasını web.config / app.config'e kopyalayan bir bat dosyası buldum. Bu yarasa dosyasını ön yapıda da çağırıyorum. Bu yarasa dosyasının kodu:
@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.
Ön oluşturmamda yarasa dosyasına bir çağrı yapardım, örneğin:
call "$(ProjectDir)\..\..\copyifnewer.bat" "$(ProjectDir)web.config.$(ConfigurationName)" "$(ProjectDir)web.config