프로젝트 파일을 버전 관리하에 유지해야합니까? [닫은]


87

Eclipse의 .project, .classpath, .settings와 같은 프로젝트 파일을 버전 제어 (예 : Subversion, GitHub, CVS, Mercurial 등)하에 유지해야합니까?



12
그래서 매우 건설
QED

답변:


93

휴대용 설정 파일 을 버전 제어에 유지하고 싶습니다 .
즉 ,
절대 경로가없는 파일입니다.
그것은 포함:

  • .계획,
  • .classpath ( 절대 경로가 사용되지 않은 경우 , IDE 변수 또는 사용자 환경 변수를 사용하여 가능)
  • IDE 설정 ( '수락 된'답변에 강하게 동의하지 않는 부분입니다). 이러한 설정에는 종종 이 프로젝트를 작업 공간에로드하는 모든 사용자에게 일관되게 적용하는 데 매우 중요한 정적 코드 분석 규칙 이 포함됩니다 .
  • IDE 특정 설정 권장 사항은 큰 README 파일에 작성해야합니다 (물론 버전도 지정).

나를위한 경험 법칙 :
프로젝트를 작업 공간으로로드 할 수 있어야하고 IDE에서 올바르게 설정하고 몇 분 안에 작업을 시작하는 데 필요한 모든 것이 있어야합니다.
추가 문서 나 읽을 위키 페이지가 없습니다.
로드, 설정, 이동.


@Rich : 감사합니다. 다른 독자는 1 년 후 같은 질문에 대한 Rich의 답변을 참조하십시오. stackoverflow.com/questions/1429125/…
VonC

3
핵심 단계 "... 분만에 시작 ..."
Eric Labashosky

3
그렇다면 VC 저장소에는 모든 IDE에 대한 구성 파일이 있어야합니까? NetBeans, Eclipse, Emacs, vi 등 무엇입니까? 개발자가 자신의 IDE를 설정해야하기 때문에 이러한 파일에 대해서는 특별히 동의하지 않습니다.
RHSeeger

3
@RH- "... 자신의 IDE를 설정해야합니다". 일부 광대가 Eclipse 코드 스타일 속성을 설정하는 것을 잊고 TAB이있는 소스 파일을 체크인 할 때까지 괜찮습니다. 으악 !!
Stephen C

2
저도 동의하지 않습니다. CI, 여러 버전, 플랫폼, IDE 등을 사용하는 경우 DRY가 상당히 나빠집니다. Esp. 다른 플러그인 / 설정이 여기서 끝나는 것에 큰 영향을 미치기 때문입니다.
jayshao 2010

30

.project 및 .classpath 파일 예. 그러나 IDE 설정을 버전 제어에 유지하지 않습니다. 설정을 유지하는 데 좋지 않은 플러그인이 있으며 일부 설정은 한 개발 시스템에서 다음 시스템으로 이식성이 매우 낮다는 것을 발견했습니다. 따라서 대신 개발자가 IDE를 설정하는 데 필요한 단계를 강조하는 Wiki 페이지가 있습니다.


2
-1 수천 명의 시간을 낭비하는 대신 해당 플러그인에 대한 버그 보고서를 제출하는 것이 좋습니다. 그런 다음 모든 안정된 설정 파일을 버전 제어하에 놓고 해당 Wiki 페이지를 베어 뼈대로 다듬 었습니다.
Aaron Digulla

18

이것들은 내가 생성 된 파일이라고 생각하는 것이므로 버전 관리하에 두지 않습니다. 예를 들어 사람들이 다른 Eclipse 플러그인을 설치 한 경우에는 시스템마다, 개발자마다 다를 수 있습니다.

대신 새 체크 아웃을 할 때 이러한 파일의 초기 버전을 생성 할 수있는 빌드 도구 (Maven)를 사용합니다.


정확하게 말하면 mvn eclipse : eclipse는 적절한 .classpath 및 .project를 생성합니다. -DdownloadSources = true 및 -DdownloadJavadocs = true를 전달할 수 있습니다.
Aleksandar Dimitrov

항상 소스와 javadoc을 다운로드하도록 pom에서 eclipse 플러그인을 구성 할 수도 있습니다.
Chris Vest

1
-1 IDE에서 프로젝트 설정을 변경하지 않는 한 작동합니다. 그리고 위험은 : 파일을 변경하면 파일의 버전이 지정되지 않았기 때문에 알아 차리지 못할 것입니다. 그래서 저는 이것을 찬성하고 싶습니다. 누구와도 공유하지 않으려는 프로젝트와 같은 매우 간단한 프로젝트에만이 작업을 수행하십시오. 팀에서는 일반적으로 기본값이 작동하지 않으며 각 개발자에게 설정 변경을 요청하는 것은 혼란에 대한 확실한 방법입니다.
Aaron Digulla

Aaron, IDE에서 프로젝트 파일을 변경하더라도 작동합니다. 다음에 일어나는 일은 의심하지 않는 팀에 변경 사항을 푸시하지 않는 것입니다. IDE 프로젝트는 모든 사람에게 작동하지 않는 시스템 및 개발자 관련 정보를 포함하는 경향이 있습니다. 더 많은 플러그인을 사용하고 IDE 사용이 복잡해질수록 상황이 악화된다는 것을 알게되었습니다. 사람들은 도구가 어떻게 작동하는지 알고 구성을 제어해야합니다. 내가 , 그러나,이 방법은 문제의 그것의 자신의 세트가없는 것은 아니다 것에 동의합니다.
Chris Vest

또한 이러한 파일을 경솔하게 편집하는 플러그인으로 인한 병합 충돌을 수정하는 것은 매우 빠르게 오래되었습니다.
Chris Vest

7

나는 여기서 두 가지 옵션 사이에서 갈등을 겪고 있습니다.

한편으로는 모든 소스 아티팩트가 버전 제어에 저장되고 빌드 스크립트 (예 : ANT 또는 Maven)가 표준 준수를 보장하는 한 모든 사람이 가장 생산적인 개발 도구 세트를 자유롭게 사용할 수 있어야한다고 생각합니다. 사용할 JDK, 의존 할 타사 라이브러리의 버전, 스타일 검사 (예 : checkstyle) 실행 및 단위 테스트 실행 등을 정확하게 지정합니다.

반면에 저는 많은 사람들이 동일한 도구 (예 : 이클립스)를 사용한다고 생각하며 빌드 타임 대신 디자인 타임에 표준화하는 것이 훨씬 낫다고 생각합니다. 예를 들어 Checkstyle은 이클립스 플러그인보다 훨씬 더 유용합니다. ANT 또는 Maven 작업-개발 도구 세트와 공통 플러그인 세트를 표준화하는 것이 좋습니다.

나는 모든 사람들이 정확히 동일한 JDK, 동일한 버전의 Maven, 동일한 버전의 Eclipse, 동일한 Eclipse 플러그인 세트 및 동일한 구성 파일 (예 : Checkstyle 프로필, 코드 포맷터 규칙 등)을 사용하는 프로젝트에서 작업했습니다. 이 모든 것들은 .project, .classpath 및 .settings 폴더의 모든 것이 소스 제어에 보관되었습니다. 사람들이 의존성 또는 빌드 프로세스를 지속적으로 조정하는 프로젝트의 초기 단계에서 삶을 정말 쉽게 만들었습니다. 또한 프로젝트에 새로운 스타터를 추가 할 때 큰 도움이되었습니다.

균형 적으로 종교 전쟁의 가능성이 너무 많지 않다면 기본 개발 도구 및 플러그인 세트를 표준화하고 빌드 스크립트에서 버전 준수를 보장해야합니다 (예 : Java 버전을 명시 적으로 지정). JDK와 Eclipse 설치를 소스 제어에 저장하는 것이 많은 이점이 있다고 생각하지 마십시오. 프로젝트 파일, 구성 및 플러그인 환경 설정 (특히 코드 포맷터 및 스타일 규칙)을 포함하여 파생 된 아티팩트가 아닌 다른 모든 것은 소스 제어로 이동해야합니다.

추신 : Maven을 사용하는 경우 .project 및 .classpath 파일이 파생 된 아티팩트라는 주장이 있습니다. 이는 빌드 할 때마다 생성하고 POM에서 생성 한 후 수동으로 조정 (또는 일부 환경 설정을 변경하여 실수로 변경) 한 적이없는 경우에만 해당됩니다.


6

아니요, 소프트웨어를 빌드하는 데 필요한 버전 제어 파일 만 있기 때문입니다. 게다가 개별 개발자는 고유 한 프로젝트 별 설정을 가질 수 있습니다.


5

아니요, 저는 Maven 사용자이며 .project 및 .classpath를 업데이트하고 업데이트하는 Eclipse 용 Q 플러그인을 사용합니다 . 플러그인 설정과 같은 다른 사항에 대해서는 일반적으로 README 또는 Wiki 페이지를 관리합니다.

또한 다른 IDE를 선호하는 사람들은 Maven 플러그인을 사용하여 IDE (및 자체)를 행복하게 유지하는 데 필요한 파일을 생성합니다.


5

이것은 모두 의견이라고 생각합니다. 그러나 수년에 걸친 모범 사례는 전체 조직이 하나의 IDE에서 표준화되고 전환 할 의도가 전혀없는 경우 특정 IDE에 특정한 파일을 소스 제어에 저장해서는 안된다는 것을 나타냅니다.

어느 쪽이든 사용자 설정이 저장되는 것을 원하지 않습니다. .project에는 실제로 개발자에 특정한 설정이 포함될 수 있습니다.

Maven 또는 Ant와 같은 것을 표준화 된 빌드 시스템으로 사용하는 것이 좋습니다. 모든 개발자는 몇 초 안에 IDE에 구성된 클래스 경로를 얻을 수 있습니다.


1

예, .settings 폴더를 제외하고. 다른 파일을 커밋하는 것이 우리에게 효과적입니다. 여기에 비슷한 질문이 있습니다 .


1

일반적으로 "생성 된 파일의 버전을 작성하지 않음"접근 방식에 동의하지만 문제가있어 다시 전환해야합니다.

참고 : 저는 VonC의 답변 , 특히 "몇 분 안에 Eclipse 시작"지점에 관심이 있습니다. 그러나 그것은 우리에게 결정적이지 않습니다.

컨텍스트는 m2eclipse 플러그인을 사용하는 Eclipse + Maven입니다. 우리는 가능한 한 공통 디렉토리가있는 공통 개발 환경을 가지고 있습니다. 그러나 때때로 누군가가 플러그인을 시도하거나 구성에서 작은 사항을 변경하거나 다른 브랜치의 두 번째 작업 공간을 가져 오는 경우가 있습니다.

우리의 문제는 Eclipse에서 프로젝트를 가져올 때 .project 생성이 수행되지만 나중에 모든 경우에 업데이트되지 않는다는 것입니다 . 슬프고 m2eclipse 플러그인이 개선 될 것이므로 영구적 인 것은 아니지만 지금은 사실입니다. 그래서 우리는 다른 구성을 갖게됩니다. : 우리가 오늘 가지고하는 것이 었 몇 가지 본성이 후 많은 다르게 행동 일부 시스템에서 많은 프로젝트에 추가 된 :-(

우리가 볼 수있는 유일한 해결책은 .project 파일의 버전을 지정하는 것입니다 (위험을 피하기 위해 .classpath 및 .settings에 대해 동일한 작업을 수행합니다). 이렇게하면 한 개발자가 자신의 pom을 변경하면 로컬 파일이 m2eclipse를 사용하여 업데이트되고 모두 함께 커밋되고 다른 개발자가 모든 변경 사항을 볼 수 있습니다.

참고 : 우리의 경우 상대 파일 이름을 사용하므로 해당 파일을 공유하는 데 문제가 없습니다.

따라서 귀하의 질문에 답하기 위해 예라고 대답합니다. 해당 파일을 커밋합니다.


나는 또한 좋아했다 :


"... m2eclipse를 사용하여 그녀의 pom을 변경합니다 ..."? m2eclipse는 pom 파일과 어떤 관련이 있습니까? 확실히 그것을 사용하지만 pom에 대한 변경 사항은 플러그인과 독립적이어야합니다.
RHSeeger

@RHSeeger 감사합니다.이 부분의 답변에 대한 명확성을 향상시킬 것입니다.
KLE

0

이러한 프로젝트 파일은 프로젝트에서 작업 할 때 시간이 지남에 따라 변경 될 수 있으므로 예, 버전 관리하에 배치합니다.



0

IntelliJ IDEA를 사용하고 프로젝트 (.ipr) 및 모듈 (.iml) 파일의 '.sample'버전을 버전 관리하에 유지합니다.

여기서 좀 더 큰 것은 버전 관리, IMHO보다 공유 및 재사용 입니다. 그러나 이러한 구성을 공유하려는 경우 저장소보다 다른 모든 구성 바로 옆에 배치하는 것이 더 좋습니다.

공유 및 버전 관리 프로젝트 파일의 몇 가지 장점 :

  • 태그 / 브랜치를 확인하고 빠르게 작업을 시작할 수 있습니다.
  • 새로운 개발자가 먼저 개발 환경을 설정하고 속도를 높이는 것이 더 쉽습니다.
  • 이것은 항상 깊이 만족하는 DRY를 더 잘 준수합니다. 그 전에는 모든 개발자가 가끔씩 이러한 것들을 설정해야했고, 본질적으로 반복적 인 작업을해야했습니다. 물론 모든 사람이 자신의 반복을 피할 수있는 작은 방법이 있었지만 팀 전체를 보면 중복 된 노력이 많았습니다.

IDEA에서 이러한 파일에는 다음과 같은 구성이 포함되어 있습니다. "소스"및 "테스트 소스"디렉토리는 무엇입니까? 외부 의존성에 대한 모든 것 (어디에 라이브러리 jar, 관련 소스 또는 javadocs가 있는가) 빌드 옵션 등. 이것은 개발자마다 다르지 않은 것입니다 (저는 이것에 매우 동의 하지 않습니다 ). IDEA는 플러그인 구성뿐 아니라 더 많은 개인 IDE 설정을 다른 곳에 저장합니다. (저는 Eclipse를 잘 모릅니다. 이것은 상당히 다를 수도 있고 아닐 수도 있습니다.)

나는 다음과 같은 대답에 동의합니다 .

프로젝트를 작업 공간에로드 할 수 있어야하며 IDE에서 올바르게 설정하고 몇 분 안에 작업을 시작하는 데 필요한 모든 것이 있어야합니다. [...]로드, 설정, 이동.

그리고 우리는 버전이 지정된 프로젝트 파일 덕분에 이렇게 만들었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.