2014-03-12 3 views
6

나는 Visual Studio 2012와 다른 개발자를 2013 년에 개발 중이다. git에서 코드를 공유 할 때마다 각 Visual Studio 버전은 .sln 헤더를 원하는대로 변경한다. 우리는 거의 모든에이 같은 변화가 커밋 얻을 :VS2012와 VS2013은 .sln 헤더를 통해 싸운다

@@ -1,8 +1,6 @@ 
<U+FEFF> 
Microsoft Visual Studio Solution File, Format Version 12.00 
-# Visual Studio 2013 
-VisualStudioVersion = 12.0.30110.0 
-MinimumVisualStudioVersion = 10.0.40219.1 
+# Visual Studio 2012 

이를 방지 할 수있는 방법이 수동으로 .SLN에 대한 변경 사항을 검토하고 관련있는 경우에만 그들을 투입 이외 있습니까?

.gitignore에 솔루션 파일을 추가하는 것은 좋은 생각이 아닙니다. 유효한 변경 사항은 드문 경우가 아니기 때문입니다.

+4

2010 년과 2012 년에도 동일한 문제가 있습니다. 2012 년 사용자 중 소수에 불과하므로 위험한 변경 사항을 확인하지 않았습니다. 그것은 거의 일어나지 않으며'.vcxproj' 파일 (예를 들어)에있는 몇 가지 것들을 위해서 우리는 조건부 코드를 사용하여 두 IDE에서 원활하게 작동하도록했습니다. – patrickvacek

+0

우리는 프로젝트의 시작 단계에 있으며 3 번째 커밋마다 프로젝트/솔루션 파일의 실제 변경 내용이 포함 된 것처럼 보입니다. 나는 그 해결책이 나중에는 진정한 대안이 될 것이라고 생각하지 않는다. – dancek

+1

'git add -p'도 이와 같은 상황에 편리합니다. 사실, 솔루션/프로젝트 파일을 많이 엉망으로 만들지는 않겠지 만, 내가 할 때, 나는 항상 중요한 것을 밟지 않도록'git add -p'를 사용합니다. – patrickvacek

답변

1

나는이 주제에 관한 지식의 요약을하기 위해 계속해서 대답 할 것입니다. 어느 정도까지, 나는 이것이 git로 해결되지 않은 문제라고 생각한다. 표준 답변은 "VCS에 바이너리와 메타 데이터를 확인하지 마십시오"이지만 IDE/컴파일 구성 정보를 공유해야하지만 실제로는 여러 컴파일러/OS/버전/등을 지원해야합니다.

분명히 .gitignore은 진정으로 사용자에 종속적이거나 컴파일러에서 생성되는 모든 항목에 유용합니다. 스스로 가장 쉽게 무시할 수있는 가장 좋은 항목을 알아 내거나 다른 컴파일러와 IDE에 대해 많은 lists available online을 볼 수 있습니다.

그러나 일부 파일은 필요하지만 여전히 사용자간에 변경되는 요소에 따라 달라집니다. 내 경험상, Visual Studio C 프로젝트의 .vcxproj 파일이이 공격 대상이었습니다. 문제는 VS2010과 VS2012가 PlatformToolset의 다른 버전을 사용하려고한다는 것입니다. 해결책은 조건문을 사용하는 것이 었습니다.

<PlatformToolset Condition="'$(VisualStudioVersion)' == '10.0'">v100</PlatformToolset> 
<PlatformToolset Condition="'$(VisualStudioVersion)' == '11.0'">v110</PlatformToolset> 

이 아이디어는 귀하의 구체적인 경우에는 효과가 없을 것이라고 생각하지만 많은 경우에 효과가있을 것입니다. 귀하의 상황에, 나는 당신이 "표준"버전 (즉, 기본 컴파일러/IDE/버전/기계/뭐든간에 선택)을 결정해야한다고 생각하고, 그때 어떤 상황에서 충돌 섹션을 확인하지 않도록해야합니다 . 가장 쉬운 방법은 모든 변경 사항이나 문제가있는 것으로 알려진 파일에 대해 git add -p을 사용하는 것입니다. 모든 사람에게 유용한 부분 만 추가하고, 나머지 부분은 rebase 등으로 방해가되는 경우 git stash 또는 중요한 부분을 다 써서 git checkout -- <filename>으로 불을 뿜을 수 있습니다.

이 문제 (또는 매우 유사한 문제)도 here으로 제기되었지만 서면으로 답변하는 것은 그리 도움이되지 않습니다. This에는 관련 토론이있을 수도 있지만 문제와 관련된 진정한 해결책은 다소 부족합니다.

+0

유익한 답변 주셔서 감사합니다! '.csproj' 파일과 비슷한 문제가 발생하지 않기 때문에 기쁩니다 :) – dancek

+0

문제가 없습니다! 좀 더 우아한 해결책이 있었으면 좋겠다고 생각했지만, 지금까지 한 번도 들어 본 적이 없기 때문에 생각하고 찾을 수있는 모든 조언을 모았습니다. 잘하면 도움이됩니다. :) – patrickvacek