2010-11-25 5 views
36

여러 Java 프로젝트가 포함 된 Eclipse 작업 공간에 Eclipse RCP 애플리케이션 용 코드가 있습니다. 우리는 Mercurial을 단순한 .hgignore * * .class와 함께 사용합니다 (그러나 동일한 문제는 힘내와 관련이 있습니다).Eclipse 프로젝트 .metadata는 Git/Mercurial에서 안전하게 무시할 수 있습니까?

코드를 조금만 변경해도 .metadata의 많은 파일이 변경 될 수 있습니다.

버전 관리에서 .metadata의 일부 또는 전부를 제외하고 싶습니다. 완전히 제외하면 작업 공간이 손실됩니다.

안전하게 제외 할 수있는 사람은 누구입니까? 또는 코드를 새 컴퓨터로 가져 오면 어떻게 다시 만들 수 있습니까?

+0

전체 Eclipse 작업 공간을 단일 Mercurial 저장소에 저장한다는 사실을 알고 싶습니다. 리포지토리에 각 프로젝트를 저장 한 다음 우산 리포지토리의 하위 리포지토리로 그룹화하여 함께 버전을 만들 수 있도록했습니다 (Eclipse에 대한 지원이 있는지 여부는 모르겠지만). –

+0

플러그인 기반 제품이며 별도의 프로젝트가 각각 플러그인을 정의합니다. 모두 함께 또는 전체 제품이 필요합니다. 그래서 개별 프로젝트는 전체의 일부일뿐입니다. 그래서 우리는 전체 Eclipse 작업 공간을 단일 저장소에 저장하고자합니다. –

답변

15

파일은 다음과 같습니다

  • version.ini (매우 흥분되지 않음)
  • .plugins/org.eclipse.jdt.core/variablesAndContainers.dat (클래스 경로 변수)
  • .plugins /의 org.eclipse.core.resources/.projects/* /. 위치 (작업 공간에서 프로젝트)

어딘가에, 내가 어떤 이클립스 관련 도구를 테스트하기 위해 사용되는 이클립스 작업 공간이 꽤되어 있습니다 심각하게 자르다, b 유토피아 작품. 나는 그것을 파헤칠 수 있는지 알게 될 것이다.

+1

고마워요! 바로 그게 효과가 있습니다. 또한 .metadata \ .plugins \ org.eclipse.core.resources \ .root 및 .safetable을 유지해야했습니다. –

+0

.metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat도 추가해야했습니다. –

4

작업 영역 메타 데이터는 실제로 소스 제어에 보관하면 안됩니다. 기본 작업 공간 구성은 team project set을 통해 공유 할 수 있습니다. 내가 개인적으로 알고 있어요

+0

감사합니다 - 유망 해 보입니다. 나는 그것을 시도 할 것이다. –

+0

프로젝트 설정 파일에는 체크 아웃 할 프로젝트와 그 밖의 다른 프로젝트가 포함됩니다. 내가 당신과 동의하지 않는다는 것은 아닙니다. 저는 가장 신중한 작업 방법은 코드와 프로젝트 당 메타 데이터를 체크인하고 작업 공간을 로컬 제어하에 두는 것입니다.하지만 OP가 작업 영역 구성 공유를 주장한다면 그는 아마 PSF 이상의 것이 필요합니다. –

+0

Tom이 맞습니다. 그건 나를 위해 작동하지 않았다. PSF에는 연결이 불가능한 (잘못 구성된 CVS 저장소에 대한 참조가 포함되어 있습니다.) 물론 연결할 수 없습니다. –

4

저는 일상적으로 .project와 .classpath를 유지하므로 git에는 안전하지만 유용합니다.

.class 및 .settings은 내 gitignore에 있습니다. 그것들은 각각 생성되고 사람마다 특정한 것입니다.

+1

당신은이 문장이 옳은 것 같지만 왜 github eclipse 무시 파일에 .project와 .classpath가 여전히 포함되어 있는지 궁금합니다. – lanoxx

+0

github eclipse ignore에는 .project (현재는 적어도 현재), .cproject 만 포함되어 있지 않습니다. –

50

GitHub의 카탈로그는 다양한 플랫폼, 편집자와 언어에 대한 무시에 대한 filespecs을 제안 커뮤니티 "gitignore"프로젝트 유지하고있다 : https://github.com/github/gitignore

이클립스 무시 현재 위치 : https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore

(있을 경우 다른 filespecs 그들이 그들에게 알려 대해 알아야한다!)

+6

훌륭한 프로젝트입니다! 이 특별한 무시 목록에는 두 가지 문제가 있습니다. 하나는 .classpath와 같이 체크인하고 싶은 것들을 무시한다는 것이고, 다른 하나는 프로젝트 디렉토리 내부의 것들에 관한 것이고 OP는 전체 작업 공간. 이 목록을 작업 영역에 적용하면 전체 .metadata 디렉토리가 무시되므로 프로젝트 .location 파일과 같이 매우 중요한 것을 잃어 버릴 수 있습니다. 정말로, 여기에있는 이클립스는 권위있는 파일과 파생 된 파일을 아주 도움이되는 방식으로 혼합한다. –

29

메타 데이터 및 작업 공간

I 올릴 때 .metadata 폴더를 절대로 공유하지 마십시오. 사실 특별한 이유가 없다면 작업 공간 폴더를 공유하지 않고 대신 git를 사용하여 각 프로젝트를 개별적으로 공유 할 수 있습니다. 그 방법은 .metadata 폴더는 항상 자식 저장소의 상위 폴더에있을 것입니다 그리고 당신은 어쨌든 그것을 무시해야하는지에 대해 생각해야 그나마 :

|-- workspace/ 
| \-- .metadata/ 
| |-- yourProjectOne/ 
| | \-- .git/ 
| | |-- .project 
| | |-- src/ 
| | |-- ... 
| |-- yourProjectTwo/ 
| | \-- .git/ 
| | |-- .project/ 
| | |-- src/ 
| | |-- ... 

특정 프로젝트

당신이해야 아마 항상 .project 파일을 공유하고 결코 파일을 .settings/ 개 공유하지 마십시오. .classpath은 환경에 따라 다를 수 있지만 충돌을 일으킬 수 있으므로 (예를 들어 한 사용자가 openjdk를 사용하고 다른 사용자가 sun-jdk를 사용하는 경우) 공유하지 말 것을 제안합니다..settings에는 일식 및 환경 설정에 대한 환경 설정 및 설정이 포함되어 있으므로 공유해서는 안됩니다. git에서 복제 한 후에 제대로 프로젝트를 가져 오면 아무런 문제가 없습니다.

eclipse documentation 상태하여 .project 파일에 대한 다음

이 파일의 목적은 프로젝트 자체 설명 그래서, 을 서버에 최대 압축 또는 해제 프로젝트가 될 수 있도록하는 것입니다

은 다른 작업 영역에서 올바르게 다시 작성됩니다.

과 :

새 프로젝트가 기존 프로젝트 설명 파일이 들어있는 위치에 생성되면, 그 설명 파일의 내용이 프로젝트 설명과 같은 영광 됩니다. 한 가지 예외는 파일에있는 프로젝트 이름이 프로젝트의 이름 과 일치하지 않으면 무시됩니다. 디스크의 설명 파일이 인 경우 프로젝트 작성이 실패합니다.

나는이 종속성 관리와 함께 당신에게 많은 문제를 절약 할 수로 메이븐을 사용하는 것이 좋습니다 및

메이븐을 .classpath

메이븐 프로젝트와의 주요 차이점은 당신이 할 수 있다는 것입니다 Maven -> "Existing Maven Projects"로 프로젝트를 가져오고 pom.xml과 .project 파일을 git에 공유하기 만하면됩니다. Eclipse가 자동으로 .classpath, .settings/ 파일을 작성합니다. 따라서 분명히 당신은 그들을 공유 할 필요가 없습니다. pom.xml에서 뭔가가 변경되면 Maven -> "Update project configuration"및 Maven -> "Update dependencies"를 실행하면됩니다. 메이븐

당신 없이

.project 파일이 아닌 .settings/ 폴더를 공유해야합니다. .classpath를 공유하는 것을 고려할 수 있지만 위에서 설명한대로 충돌을 일으킬 수 있습니다. 나는 그것을 공유하지 않을 것을 제안합니다. -> "기존 프로젝트 작업 영역에서"일식이 .project 파일을 존중하지만, .classpath.settings/ 파일을 다시 작성합니다 당신은 단순히 가져 오기를 사용할 수있는 자식 저장소를 복제 한 후

: 프로젝트를 가져 아래의 방법을 사용합니다. 가져 오기가 끝나면 Eclipse에서 클래스 패스를 수동으로 구성해야합니다 (팀에서 다른 라이브러리를 사용하려고 할 때마다).

.project 파일을 공유하지 않으면 Eclipse로 프로젝트를 가져올 수 없습니다. 먼저 프로젝트 마법사를 사용하여 새 프로젝트를 작성한 다음 "일반 -> 파일 시스템"을 가져올 수 있습니다. 그러면 모든 파일이 작업 공간으로 복사됩니다. git 저장소를 작업 영역에 복제 할 수 없기 때문에 다른 곳에서 복제 한 다음 거기에서 가져와야하기 때문에 원하는 내용이 아닐 수도 있습니다. 따라서 항상 .project 파일을 공유해야합니다.

이 설명에 대한 제안 사항이 있거나 동의하지 않는 경우 추천자로 남겨 두십시오. 나는 이것이 하나 또는 다른 도움이되기를 바랍니다.

+0

maven과 m2e를 사용하면 .project를 공유해야 할 필요가 있습니까? – pioto

+1

매우 유용한 지침. 왜 모든 gitignore 파일에 .project가 포함되는지 혼란 스러웠습니다. 그러나 당신의 지시 후에, 나는 .project를 공유하기로 결정한다. – einverne

관련 문제