2012-04-25 2 views
2

저는 ankhsvn을 사용하여 Visual Studio의 프로젝트에서 친구와 공동 작업을하고 있습니다.Visual Studio 및 Ankhsvn을 사용하여 csproj 파일을 자주 변경하십시오.

동일한 소스 파일을 변경하지 않지만 우리 모두는 동일한 프로젝트를 자주 변경하고 있습니다.

VS가 자동 변경을 처리하는 방법을 이해하는 데 어려움이 있습니다. .csproj.sln 개의 파일이 있습니다.

  1. 는 다음 .csproj 일반 버전 제어에서 파일, 그리고 내가 전에 업데이트 내 친구가 .csproj에 약간의 변화를 내 앞에 최선을 다하고 및 수행했기 때문에 나는 충돌을 얻을 것이다 커밋마다 포함 : 제가보기에는 내가 두 가지 옵션이 있습니다 파일.
  2. .csproj 파일을 무시 목록에 넣으면 내 프로젝트에 내 친구가 한 모든 변경 사항이 포함되지 않기 때문에 문제가 발생합니다. 그래서 갈등을 해결하거나 종속 문제 등

    이 작업을 수행 할 수있는 쉬운 방법이 있나요를 해결하려면 다음 중 하나를 내가 가지고있는 두 가지 방법으로

?

감사합니다.

답변

4

제 경험상 # 1이 유일한 옵션입니다. 두 사람 모두 .csproj를 정기적으로 편집하고 있기 때문에 .csproj의 특성은 변경 내용이 항상 파일의 동일한 영역에서 발생하므로 충돌이 발생할 것입니다.

# 2를 절대 피하십시오. 나는 당신이 충돌을 잘못 해석하는 것에 대해 걱정하고 VS에서 "참조 추가"를 사용하는 것이 더 쉽다는 것을 알기 때문에 이것을하고 싶다고 생각할 수 있습니다. .csproj 파일에서 대부분의 충돌 해결 (내가 당신이 의존성을 정기적으로 추가하고 있다고 가정 할 때)은 TortoiseMerge에서 "그 전에 사용"을 사용하거나 그 반대로 사용하기 때문에이 작업을 수행하지 않습니다. 머지 도구를 사용하지 않고 텍스트 편집기에서 작업하는 경우 TortoiseSVN을 사용하여 병합하기 쉬운 방법을 사용하는 것이 좋습니다.

+0

내 경험에 따르면 프로젝트가 기술적으로 문서화되어 있으면 이러한 충돌을 최소화 할 수 있습니다. 모든 참조, 클래스, 뷰/페이지/양식은 사용자/개발자 한 명만 프로젝트에 추가해야하며 다른 모든 프로젝트는 프로젝트를 업데이트하고 클래스/뷰/양식/페이지, 코드 및 범하다. 그러나 우리 모두는 개발 중에 충돌을 야기 할 수있는 많은 것들을 프로젝트와 전략/논리 변화에 추가해야하지만 여전히이 접근법을 통해 최소화 될 수 있다는 것을 알고 있습니다. –

2

나는 당신의 문제가 의도적으로 설계된 것 같습니다. 프로젝트 파일을 제외해서는 안됩니다.

사실이 작업을 수행하는 현명한 방법은 코드를 여러 프로젝트/모듈/라이브러리로 분리하는 것입니다. 이 경우 프로젝트 파일이 변경 될 수 있지만 다른 파일에서 작업하면 문제가되지 않습니다. 모든 것은 프로젝트를 추가/제거하는 경우에만 변경되는 솔루션 파일에 함께 보관됩니다. 물론 이것은 소프트웨어 프로젝트를 계획하고 구현하기 전에 모듈을 정의해야하지만 수행하기 전에 생각하는 것은 거의 잘못된 선택이 아니라는 것을 의미합니다.

편집 : 다른 버전 제어 시스템에 대해서도 생각해보십시오. mercurial 또는 git과 같은 것은 도움이 될 것입니다. 필요한 변경 만 가져 오거나 병합하기 때문입니다.

+0

.csproj를 수정하고 있기 때문에. 그가 다른 라이브러리와 모듈을 사용하지 않는다는 것을 의미합니다. 그들은 .csproj에 종속성을 추가합니다. 결과적으로 .csproj에 이 추가됩니다. 따라서 모듈을 사용하더라도 충돌로 끝날 것입니다. – Dave

+0

당신은 맞지만 그는 또한 그가 여러 프로젝트를 사용한다고 말하지 않습니다. 그러나 csproj 파일을 자주 변경하면 여러 당사자가 동일한 프로젝트에서 작업 할 때 충돌이 발생할 수 있습니다. 각 프로젝트는 자체 참조 afaik를 저장하므로 한 프로젝트의 변경 사항이 다른 프로젝트에 영향을 미치지 않아야합니다. 프로젝트를 분할하는 것이 결국 가능할 수도 있습니다 ... – konqi

+0

프로젝트를 둘러싼 상황을 잘 모릅니다.하지만 두 명의 개발자가 동일한 프로젝트에서 작업하고 필요로하는 참조를 추가해야하는 것은 매우 합리적입니다. – Dave

0

svn에서 .sln 및 .csproj 파일을 처리하기위한 제안을하고 싶습니다.

프로젝트를 완전히 업데이트하십시오.

파일을 잠그고 다른 사람이 파일을 변경할 수있는 잠금 메커니즘을 찾으십시오.내가 가지고있는 것처럼 TortoiseSVN을 사용한다면, https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-locking.html

을 참조하십시오. 이제 파일을 빠르게 추가하십시오 (파일 트리에 추가하고 프로젝트에 포함하도록 지시하십시오).

그런 다음 편집 된 .sln 및 .csproj 파일과 함께 새 파일을 커밋하십시오.

커밋 후 svn에서 잠금을 해제하지 않으면 지금 해제하십시오.

이제는 분명히해야합니다. 솔루션 및 프로젝트 파일이 당신을 위해 작동한다는 것을 알고 있습니다. 그러나 새 .sln 또는 .csproj로 업데이트하기 전에 .sln 또는 .csproj를 편집하는 경우 친구에게 적합하지 않을 수 있습니다. 이 경우에는 .sln 또는 .csproj를 삭제하고로드 한 다음 나머지를 처리해야 할 수 있습니다. (솔루션 또는 프로젝트에 파일을 추가해야하는지 또는 Visual Studio에서 해당 파일을 추가해야하는지 여부는 알 수 없습니다.)

빈 파일을 추가하면 프로젝트가 그들을 인식하고이 과정을 저 지르십시오. 그러면 다른 사람이 동시에 편집하는 일은 거의 없습니다. 나중에 언제든지 파일을 평상시에 편집 할 수 있습니다. 당신이 아직 그것에 의존 할만한 것을 작성하지 않았다면 그것은 내용이 필요하지 않습니다. 파일에 솔루션이 손상되지 않도록 콘텐츠가 필요한 경우 나중에 대체 할 수있는 유효한 콘텐츠를 파일에 제공하는 것이 좋습니다.

누구에게도 다른 제안이 있으면 그 의견을 듣고 싶습니다. 그러나이 게시물은 현재 3 살입니다 ...

관련 문제