GIT 대억지로-두 개의 벤처 캐피탈을 입력 할 것이다.을 떠날 것이다[마감]

StackOverflow https://stackoverflow.com/questions/222782

문제

그래서 나는 과정에서 얻 GIT 판매에서 작동합니다.첫번째 것을 내가 필요로하는 모든 사람을 설득하는 GIT 에서 더 나은 그들이 무슨 이미 사용하고있다.우리가 현재 사용하 Perforce.다른 사람이 이동을 통해 유사한 판매?어떤 좋은 연결/조언?

하나의 큰 승리는 우리와 함께 작업할 수 있습니다 그것은 네트워크에 연결되어.다른 승 IMO 가 방법 추가/체크아웃 처리됩니다.더 많은 포인트를 환영합니다!또한 우리는 약 10~20devs 니다.

도움이 되었습니까?

해결책

Perl 5 통역사 소스 코드는 현재 Perforce에서 Git으로 변환하는 스로를 통과하고 있습니다. 아마 샘 빌레인 git-p4raw 수입업자가 관심이 있습니다.

어쨌든, 모든 중앙 집중식 VC에 걸쳐있을 주요 승리 중 하나와 대부분의 분산 된 승리도 생생하고 물집이 있습니다. 속도. 당신은 그것을 경험할 때까지 전체 프로젝트 역사를 당면한 전체 프로젝트 역사를 보유하는 것이 얼마나 해방되는지 상상할 수 없습니다. 각 커밋에 대한 전체 차이를 포함하는 전체 프로젝트 기록의 커밋 로그를 생성하더라도 1 초의 분획으로 측정 할 수 있습니다. git은 너무 빨라 모자가 날아갈 것입니다. 네트워크를 통해 왕복 해야하는 VCS는 단순히 기가비트 이더넷 링크를 넘어서도 경쟁 할 가능성이 없습니다.

또한, GIT는 커밋을 할 때 신중하게 선택적으로 선택할 수있게하므로 작업 사본 (또는 단일 파일 내)의 변경이 여러 커밋에 대해, 필요한 경우 다른 지점에 걸쳐 분산 될 수 있습니다. 이를 통해 일하는 동안 더 적은 정신 메모를 만들 수 있습니다. 작업을 신중하게 계획 할 필요가 없습니다. 당신은 그들이 당신에게 일어나는대로 원하는 것을 변경할 수 있으며, 그 일이 될 때까지 거의 항상 쉽게 풀어 줄 수 있습니다. 은신처 여기서 매우 큰 도움이 될 수 있습니다.

나는 함께, 이러한 사실로 인해 자연스럽게 Git을 사용하기 전보다 자연스럽게 더 많은 초점을 맞춘 커밋을 만들게된다는 것을 알게되었습니다. 이것은 당신의 역사를 일반적으로 더 유용하게 만들뿐만 아니라 특히 부가 가치 도구에 특히 도움이됩니다. git bisect.

지금 당장 생각할 수없는 것이 더 있다고 확신합니다. GIT에서 팀을 판매한다는 제안의 한 가지 문제는 위에서 언급 한 것처럼 많은 혜택이 서로 관련되어 서로 연관되어 있다는 것입니다. 워크 플로를 변경하고 어떤 변화가 Bonafide 개선이 될 것입니다. 이것을 고려해야하며, 또한 명시 적으로 지적해야합니다.

다른 팁

나는 직장에서 Perforce를 사용합니다. 또한 코드에서 작업 할 때 여전히 어떤 형태의 버전 제어를 좋아하고 서버에 연결할 수 없기 때문에 GIT도 사용합니다. 아니요, 오프라인 작업은 동일하지 않습니다. 여기에 내가 Git이 큰 이점이라는 것을 찾은 곳입니다.

  1. 분기 속도 - git은 최대 몇 초가 걸립니다.
  2. 갈등 - P4Merge의 자동 결의는 일주일 분량의 일을 한 번 파괴했습니다. 그 이후로 나는 병합 할 때 손으로 해결하려고합니다. Git이 충돌에 대해 저에게 나에게 프롬프트 할 때, 그것은 실제로 갈등입니다. 나머지 시간 동안, git은 물건을 올바르게 해결하고 시간을 절약합니다.
  3. 병합 추적 - 다른 두 가지에서 계속 병합을받는 지점이 하나있는 경우, 두통이 얼마나 균형을 이룰 수 있는지 알 수 있습니다. git을 사용하면 GIT의 병합 결과가 실제로 조상이 누구인지 아는 새로운 커밋이기 때문에 두통이 최소화됩니다.
  4. 권한 - 파일에서 작업하려고 시도한 횟수를 추적했지만 Perforce에서 체크 아웃되지 않았기 때문에 할 수 없었습니다. Xcode (또는 단단한 Perforce SCM 플러그인이없는 편집자)로 작업 한 경우 오프라인으로 작업 한 경우이 작업이 얼마나 자극적 인 지 알 수 있습니다. 나는 git에 대해 걱정할 필요가 없습니다. 나는 나의 변화를한다. git은 나를 멈추지 않고 배경에서 그들을 추적합니다.
  5. 메인 트리를 깔끔하게 유지 - git로, 나는 내 커밋을 정리하고 코드를 정리하여 역사가 멋지고 깔끔해 보일 수 있습니다. 그 중 어느 것도 "이전 체크인의 일부가되어야하기 때문에이 파일을 확인하는 것"쓰레기는 없습니다. 나는 아무도 도와주기 때문에 그렇게 커밋합니다.
  6. 보관소 - Perforce 서버는 P4 Shelve 명령을 사용하려면 2010.1 또는 최신 버전이어야합니다.
  7. 패치 생성 - git에서 쉽게 할 수 있습니다. 명령 줄을 사용하지 않고 Perforce에서 가능한지 모르겠습니다.
  8. GUI에서 패치를 우편으로 보내고 있습니다.
  9. 디스크 공간 - 성능이있는 모든 분기는 사본입니다. 즉, 소스 트리가 거대하다면 디스크 공간이 빨리 먹는다는 것을 의미합니다. 건축을 시작하면 추가 공간을 세지 않습니다. 분기와 디스크 공간 사이에 링크가있는 이유는 무엇입니까? git을 사용하면 100 개의 지점과 한 번에 하나의 지점 만 존재할 수 있습니다. 두 버전에서 동시에 작업하려면 클론을하고 작업을 수행 한 다음 원하는 경우 아무것도 잃지 않고 하나의 클론을 제거 할 수 있습니다.
  10. Xcode4에 있다면 Perforce 지원이 삭제되었고 GIT 지원이 내장되어 있습니다. 나처럼 크로스 플랫폼 작업을 수행하면 많은 것이 중요합니다. Visual Studio를 사용하면 GIT 확장을 사용할 수 있습니다. Perforce를 사용하면 두 OS에서 똑같이 유쾌합니다. 글쎄, 아마도 현장에서 Xcode4를 사용하여 Mac에서 조금 더.
  11. 결함이있는 확인 (또는 Git Bisect 규칙) - 버그가 어디에서 소개되었는지 알아 내기 위해 Perforce와 이진 검색을 시도한 적이 있습니까? 꽤 번거 로움, 네? 중간에있는 다른 지점에서 통합 될 때 번거 로움이 더 많습니다. 왜요? 그러한 작업에 대한 자동화가 없기 때문입니다. Perforce와 대화하기 위해 자신의 도구를 작성해야하며 일반적으로 시간이 없습니다. Git을 사용하면 출발점 ( "좋은"포인트 및 "나쁜"포인트)을 제공하고 검색을 자동화합니다. 더 좋은 점은 빌드 및 테스트 프로세스를 자동화 할 수있는 스크립트가있는 경우 스크립트에 git을 연결할 수 있으며 체크인을 찾는 전체 프로세스가 자동화됩니다. 그것이 어떻게 해야하는지입니다.
  12. Refactors의 변경 사항 추적 - Bigclass를 Smallclass1 및 SmallClass2로 분할 해보십시오. Perforce를 위해 Bigclass는 이제 존재하지 않았고 두 개의 새로운 클래스 (Smallclass1과 SmallClass2가 소스 트리에 합류했습니다). 성능을 발휘하기 위해 Bigclass와 Smallclass1과 Smallclass2 사이에는 관계가 없습니다. 반면에 Git은 Bigclass의 X%가 Smallclass1에 있고 Bigclass의 Y%가 Smallclass2에 있고 Bigclass가 존재하지 않는다는 것을 알기에 충분히 똑똑합니다. 이제 여러 지점에서 변경 사항을 검토하는 사람의 관점에서 볼 때 GIT 또는 Perforce 's (더 유용한 접근법)를 알려줍니다. 개인적으로, 나는 코드의 실제 변화를보다 정확하게 반영하기 때문에 Git의 접근 방식을 선호합니다. Git은 파일 자체가 아닌 파일 내에서 컨텐츠를 추적하기 때문에이를 수행 할 수 있습니다.
  13. 중앙 집중식 또는 분산 : git은 a DVC Perforce는 중앙 집중식입니다. 중앙 집중식 VC는 나중에 분산 될 수 없지만 DVC (특히 GIT)를 중앙 집중화 할 수 있습니다. GIT에 매우 미세한 액세스 컨트롤을 추가하는 몇 가지 제품이 있습니다. 개인적으로, 나는 장기적으로 더 큰 유연성을 제공하는 시스템을 가지고 갈 것입니다.
  14. 분기 매핑 : Perforce에서 바로 분기를하려면 분기 매핑을 만들어야합니다. 그 이유는 있지만, Perforce가 지점을 개념화하는 방법과 관련이 있습니다. 개발자 또는 팀으로서 이것은 단순히 작업 흐름의 한 단계를 더 의미합니다. 이는 전혀 효율적이라고 생각하지 않습니다.
  15. 팀 간의 작업 공유 : Perforce를 사용하면 제출을 해제 할 수 없습니다. Team A는 기능 A의 Team B에서 작업 중입니다. Feature B의 팀 B는 버그 수정 작업을합니다. 이제 팀 A & B는 기능을 구현하기 위해 많은 버그를 수정해야합니다. 유일한 것은, 그들은 그들의 변화를 저지르면 (마감일에 돌진하기 때문에) 그렇게 징계되지 않았기 때문에 그들의 "버그 수정"은 더 큰 제출물의 일부입니다. 지점이 걱정됩니다. 그러나 Team C는 이제 포인트 릴리스를 수행하고 있으며 다른 팀으로부터 버그 수정을 받고 싶습니다. 그들이 GIT를 사용하는 경우, Team C는 Cherry가 다른 팀의 관련 변경 사항을 선택하고 나누고 부분적으로 구현 된 기능을 소개하는 것에 대해 걱정하지 않고 필요한 것을 가져갈 수 있습니다. Perforce를 사용하면 Team C는 영향을받는 파일을 얻을 수 있지만 훨씬 더 많은 수동 프로세스를 사용하여 관련 변경 사항을 분리해야합니다.
  16. 플랫폼 변경 - 미래에 어떤 이유로 든 Perforce와 함께 선택 플랫폼을 변경하기로 결정한 경우 Perforce.com의 자비와 선택한 플랫폼을위한 도구의 가용성에 있습니다.
  17. 미래의 놀라운 소스 제어 엔진 X로 변경 - 소스 제어에 사용하는 것을 변경하기로 결정한 경우 소스 제어 기록을 Perforce에서 추출하고 새로운 시스템 X로 이동하는 것이 악몽이 될 것입니다. 당신은 추측 할 수 있습니다 - Google은 내가 말하는 것을 이해하기 위해 git 마이그레이션을위한 Google만이 내가 말하는 것을 이해합니다. 최소한 오픈 소스 인 git의 경우 많은 추측을 제거합니다.

글쎄, 그것은 내 2 센트입니다. Perforce의 방어에서, 나는 그들의 고객 지원 규칙을 말하며 그들의 시간 경과보기 도구도 말해야합니다. 나는 git로 시간 경과를 볼 수있는 방법을 모른다. 그러나 편의성과 시간을 절약하기 위해 나는 언제든지 Git과 함께 갈 것입니다.

Perforce에서 전환하는 데 많은 설득력이 필요합니다. 두 회사에서는 그것을 사용했습니다. 이 두 회사는 이질적인 사무실을 가진 회사 였지만 사무실은 많은 인프라로 설립되었으므로 분리/분리 된 기능이 필요하지 않았습니다.

얼마나 많은 개발자가 변화에 대해 이야기하고 있습니까?

진짜 질문은 - GIT가 제공 할 수있는 조직의 요구를 충족시키지 못하는 성과는 무엇입니까? 마찬가지로, Git은 Perforce와 비교 한 약점은 무엇입니까? 당신이 그에 대답 할 수 없다면 여기에 묻는 것은 도움이되지 않습니다. 회사의 비즈니스 사례를 찾아야합니다. (예 : 아마도 전체 소유권 비용이 낮아질 것입니다 (임시 학습 단계의 생산성 손실, 관리 비용이 높아짐 (최소한 초기) 등).

나는 당신이 힘든 판매를 위해 있다고 생각합니다. Perforce는 교체하기에 아주 좋은 것입니다. PVC 또는 SSAFE를 부팅하려고한다면 그것은 쉬운 일이 아닙니다.

나는 사람들이 스위치를 넘어서 행복하게하는 관점에서, 일찍 시작해야 할 일 중 하나는 현지 지점이 얼마나 사적인 것이 얼마나 git에 있을지, 그리고 실수를 저지르기 위해 얼마나 많은 자유를 주는지입니다. 현재 코드에서 몇 개의 개인 지점을 복제 한 다음 실험을 시작하십시오. 일부 파일의 이름을 바꾸고, 물건을 확인하고, 다른 지점에서 물건을 병합하고, 리위 이력을, 다른 사람의 변경 세트 등을 다시 바이스하는 등. 최악의 사고조차도 현지에서 동료들에게 어떤 영향을 미치지 않는지 보여줍니다. 당신이 원하는 것은 개발자가 안전하다고 느끼는 상황이므로 더 빨리 학습 할 수 있습니다 (GIT는 가파른 학습 곡선을 가지고 있기 때문에 결국 개발자로서 더 효과적입니다.

중앙 집중식 도구를 배우려고 할 때는 다른 사용자에게 문제를 일으키는 약간의 멍청이를 만드는 것에 대해 걱정할 것입니다. 당황에 대한 두려움만으로도 사람들이 실험을 방해하기에 충분합니다. 필연적으로 개발자가 훈련 중에 보지 못했던 생산 시스템에서 상황을 만나기 때문에 특별한 "훈련"리포지토리가 있더라도 도움이되지 않기 때문에 걱정으로 돌아 왔습니다.

그러나 Git의 분산 된 특성은 이것을 멀리합니다. 현지 지점에서 실험을 시도 할 수 있으며, 끔찍하게 잘못되면 지점을 버리면 아무도 알 필요가 없습니다. 당신은 무엇이든 로컬 브랜치를 만들 수 있기 때문에 실제 라이브 저장소로보고있는 문제를 복제 할 수 있지만 "빌드를 깨는 것"또는 자신을 바보로 만들 위험이 없습니다. 당신이 그것을 끝내 자마자, 당신은 절대적으로 모든 것을 확인할 수 있습니다. 따라서 오늘 4 시간을 보낸 두 가지 주요 코드 변경뿐만 아니라 반쯤 기억했던 빌드 수정과 동료에게 무언가를 설명하면서 발견 한 문서의 철자 실수 등을 작성했습니다. 그리고 프로젝트가 방향이 바뀌기 때문에 주요 변경 사항이 버려지면 체리가 빌드 수정과 철자 실수를 지점에서 선택하고 번거 로움없이 유지할 수 있습니다.

Git에서 나를 팔았던 명령은 개인적으로였습니다 이등분. 이 기능은 현재 다른 버전 제어 시스템에서 사용할 수 있다고 생각하지 않습니다.

즉, 사람들이 GUI 클라이언트에 소스 제어를 위해 익숙해지면 GIT에 깊은 인상을받지 않을 것입니다. 현재 유일한 완전한 기능 클라이언트는 명령 줄입니다.

사람들이 어떤 성능 기능을 사용하고 있습니까?

  • 단일 시스템의 여러 작업 공간
  • 번호가 매겨진 교도소
  • 개발자 지점
  • IDE와의 통합 (Visual Studio, Eclipse, Slickedit, ...)
  • 많은 빌드 변형
  • 복합 작업 공간
  • 일부 수정 사항을 통합하지만 다른 수정 사항은 통합됩니다

나는 모든 사람들이 지휘 라인을 얻고 넣는지, Git은 그로 덮여 있고 다른 모든 RT도 마찬가지입니다.

보기에 Github는 이제 회사에 GIT 교육 과정을 제공합니다. 쿼트 그것에 대한 그들의 블로그 게시물:

나는 지난 몇 주 동안 Git에서 Androids를 훈련시키는 데 도움을주는 데 도움을주었습니다. 나는 Shawn Pearce의 질문을 받았습니다 (당신은 그의 git과 egit/jgit 영광에서 그를 알고있을 것입니다 - 그는 Junio가 마을을 떠났을 때 Maintanance를 인수하는 영웅입니다). 천공에서 git 로의 전환, 따라서 Android는 대중과 공유 할 수 있습니다. 나는 내가 그것을 기쁘게 생각하는 것 이상이라고 말할 수 있습니다.

[…]

논리적 인 굉장한 지금입니다 공식적으로 제공합니다 이러한 유형의 맞춤형 교육 서비스는 모든 회사에 대한 맞춤형 교육 서비스를 제공합니다. 여기서 GIT로 전환 할 생각이라면 조직이 교육 및 계획을 도울 수 있습니다.

강조 광산.

나는 오랫동안 Perforce를 사용해 왔으며 최근에는 Git을 사용하기 시작했습니다. 다음은 내 "객관적인"의견입니다.

천공 기능 :

  1. GUI 도구는 더 많은 기능이 풍부한 것 같습니다 (예 : 타임 랩스 뷰, 개정 그래프)
  2. 헤드 개정기에 동기화 할 때의 속도 (전체 이력 전송 오버 헤드 없음)
  3. Eclipse/Visual Studio 통합은 정말 좋습니다
  4. Changelist 당 하나의 지점에서 여러 기능을 개발할 수 있습니다 (이것이 GIT보다 유리한 지 100% 확실하지 않습니다).
  5. 다른 개발자가 무엇을하고 있는지 - 어떤 종류의 파일을 확인했는지 "스파이"할 수 있습니다.

GIT 기능 :

  1. 나는 git 명령 줄이 Perforce보다 훨씬 간단하다는 인상을 받았다 (Init/Clone, Add, Commit. 복잡한 작업 공간의 구성 없음)
  2. 체크 아웃 후 프로젝트 기록에 액세스 할 때 속도 (동기화시 전체 기록을 복사하는 데 드는 비용)
  3. 오프라인 모드 (개발자는 도달 할 수없는 P4 서버가 코딩을 금지한다고 불평하지 않습니다).
  4. 새 지점을 만드는 것이 훨씬 빠릅니다
  5. "메인"GIT 서버에는 각 개발자가 자체 로컬 샌드 박스를 가질 수 있기 때문에 많은 스토리지가 필요하지 않습니다.
  6. git은 오픈 소스입니다 - 라이센스 비용이 없습니다
  7. 회사가 OpenSource 프로젝트에도 기여하는 경우 GIT에서 패치를 공유하는 것이 훨씬 쉽습니다.

OpenSource/Distributed Projects의 경우 전반적으로 GIT는 항상 P2P 응용 프로그램과 비슷하고 모든 사람이 개발에 참여할 수 있기 때문에 GIT를 권장합니다. 예를 들어, Perforce로 원격 개발을 할 때 일주일에 한 번 1MBPS 링크 이상 4GB 프로젝트를 동기화하고 있음을 기억합니다. 그로 인해 많은 시간이 단순히 낭비되었습니다. 또한 우리는 그렇게하기 위해 VPN을 설정해야했습니다.

소규모 회사가 있고 P4 서버가 항상 올라갈 경우 Perforce도 아주 좋은 옵션이라고 말할 것입니다.

우리는 언젠가 GIT를 사용해 왔으며, 최근 GIT 서버의 하드 드라이브가 충돌했으며 최신 상태로 되돌릴 수 없었습니다. 우리는 며칠 된 상태로 돌아갈 수있었습니다. 서버가 백업되었을 때. 팀의 모든 사람이 변경을 당기거나 밀어 내고 Voila를 추진했으며 서버는 현재 상태로 돌아 왔습니다.

Perforce와 Git (및 가장 일반적으로 언급 된 것)의 중요한 차이점은 거대한 이진 파일을 각각 처리하는 것입니다.

예를 들어, 비디오 게임 개발 회사의 직원 블로그에서 : http://corearchitecture.blogspot.com/2011/09/git-vs-perforce-from-game-development.html

그러나 중요한 점은 GIT와 Perforce의 속도 차이, 문서부터 모든 바이너리에 이르기까지 모든 것을 포함하는 6GB 저장소가있을 때 (그리고 마지막으로, 실제 소스 이력)는 일반적으로에서 비롯된 것입니다. 거대한 회사가 Perforce를 운영하는 경향이 있기 때문에 지하실의 거대한 서버 은행에 모든 중요한 운영을 오프로드하도록 설정했습니다.

Perforce 부분 에서이 중요한 이점은 Perforce와 아무 관련이없는 요인, 회사가 서버 은행을 감당할 수 있다는 사실에서만 나옵니다.

그리고 어쨌든 결국, 천공과 git은 다른 제품입니다. Git은 VC만으로 설계되었으며 Perforce보다 훨씬 더 나은 기능을 수행합니다 (특히 다른 기능을 사용하기가 쉽습니다. 특히 Perforce의 분기는 열린 마음을 수행하는 것과 같습니다. 수술, 전문가 만 수행해야합니다 : P) ( http://stevehanov.ca/blog/index.php?id=50 )

Perforce Gain을 사용하는 회사는 Perforce가 VC 일뿐 만 아니라 파일 서버이기 때문에, 빌드 성능을 테스트하기위한 다른 다양한 기능을 갖추고 있기 때문입니다.

마지막으로 : git은 오픈 소스이며 부팅하기에 훨씬 더 유연하기 때문에 중요한 작업을 중앙 서버에 오프로드하여 고가의 하드웨어의 마운드를 실행하는 데 어려움을 겪지 않을 것입니다.

나는 git이 승리하는 것을 알고있는 한 가지는 모든 파일에서 "라인 엔딩을 보존하는 능력"이지만 Perforce는 Unix, DOS/Windows 또는 MacOS9 형식 ( " n", "로 번역하는 것을 고집하는 것 같습니다. r n "또는" r).

Windows 환경 또는 혼합 OS 환경에서 Unix 스크립트를 작성하는 경우 이것은 진정한 고통입니다. 규칙을 파일 별 확장 기준으로 설정하는 것은 불가능합니다. 예를 들어 .sh, .bash, .unix 파일을 Unix 형식으로 변환하고 .ccp, .bat 또는 .com 파일을 dos/windows 형식으로 변환합니다.

git에서 (기본값인지, 옵션인지 또는 유일한 옵션) "라인 엔딩 보존"으로 설정할 수 있습니다. 즉, 파일의 줄 엔딩을 수동으로 변경 한 다음 Git은 그 형식을 그대로 남겨 두는 것입니다. 이것은 나에게 일을하는 이상적인 방법을 좋아하는 것 같습니다. 나는 이것이 왜 Perforce의 옵션이 아닌지 이해하지 못합니다.

이 동작을 달성 할 수있는 유일한 방법은 파일을 이진으로 표시하는 것입니다. 내가 알다시피, 그것은 누락 된 기능을 해결하기위한 불쾌한 해킹 일 것입니다. 모든 스크립트 등에서해야 할 지루한 것 외에도 대부분의 차이를 깨뜨릴 수 있습니다.

우리가 현재 정산 한 "솔루션"은 SED 명령을 실행하여 UNIX 환경에 배치 될 때마다 스크립트에서 모든 캐리지 리턴을 제거하는 것입니다. 특히 일부는 전쟁 파일 내부에 배치되며 SED 라인이 포장을 풀 때 다시 실행해야하기 때문에 이상적이지 않습니다.

이것은 내가 생각하는 것이 git에게 큰 이점을 제공하며 위에서 언급하지 않은 것 같습니다.

편집 : Perforce를 조금 더 오래 사용한 후에는 또 다른 몇 가지 의견을 추가하고 싶습니다.

a) Perforce에서 내가 실제로 놓친 것은 명확하고 인스턴스가 변경, 제거 및 추가 파일을 포함하여 차이가 있습니다. 이것은 git과 함께 제공됩니다 git diff 명령이지만 Perforce에서는 변경 사항을 녹음하기 전에 파일을 체크 아웃해야하며, 주요 편집자 (Eclipse와 같은)가 설정되어있어 파일을 편집 할 때 파일을 자동으로 확인하기 위해 설정할 수 있습니다. 다른 방식으로 파일을 편집 할 수 있습니다. (메모장, 유닉스 명령 등). 그리고 새로운 파일은 Eclipse 및 P4eclipse를 사용하여 자동으로 추가되지 않는 것 같습니다. 따라서 모든 변경 사항을 찾으려면 전체 작업 공간에서 "Diff ..."를 실행해야합니다. 전체 작업 공간에서 먼저 실행하는 데 시간이 걸리고 두 번째로 매우 복잡한 배제 목록을 설정하지 않는 한 모든 종류의 관련없는 것들이 포함되어 있습니다. 다음 지점으로 이어집니다.

b) git에서 .gitignore는 매우 간단하고 관리, 읽기 및 이해하기 쉽습니다. 그러나 작업 공간은 Perforce에서 구성 가능한 목록을 무시/제외합니다. 나는 와일드 카드 작업으로 제외를 얻을 수 없었습니다. 나는 같은 일을하고 싶다

-//Server/mainline/.../target/...   //Svend_Hansen_Server/.../target/...

서버/메인 라인 내의 모든 프로젝트 내에서 모든 대상 폴더를 제외합니다. 그러나 이것은 내가 예상했던 것처럼 작동하지 않는 것 같습니다. 결국 다음과 같은 모든 프로젝트에 라인을 추가했습니다.

-//Server/mainline/projectA/target/...  //Svend_Hansen_Server/projectA/target/...
-//Server/mainline/projectB/target/...  //Svend_Hansen_Server/projectB/target/...
...

빈 폴더, .classpath 및 .projet 파일 등에 대한 유사한 라인.

c) Perforce에는 다소 유용한 변경자가 있습니다. 그러나, 내가 변경 한 그룹을 만들고, 모든 것을 확인하고, 변화자에게 넣고, 그 변화를 제출하기 전에 다른 작업을 수행하기 위해 다른 작업을 수행한다고 가정하십시오. 나중에 첫 번째 Changelist에 포함 된 파일 중 하나를 변경하면 해당 파일이 여전히 그 Changelist에있을 것이며, 나중에 내가 원래 추가 한 변경 사항 만 포함되어 있다고 가정하면 Changelist를 제출할 수 없습니다. 동일한 파일이됩니다). git에서 파일을 추가하고 추가로 변경하면 이러한 변경 사항이 추가되지 않았을 것입니다. git diff 먼저 새로운 변경 사항을 추가하지 않으면 파일을 커밋 할 수 없습니다. 물론, 이것은 하나의 추가 파일 세트 만있는 것과 같은 방식으로 유용하지 않지만, git에서는 실제로 변경하지 않기 때문에 변경 사항을 커밋 할 수 있습니다. 밀기 전에 다른 변경 사항에 대해 작업 할 수는 있지만 이전 변경 사항을 추진하지 않고 나중에 추가 할 다른 것을 밀 수는 없습니다.

나는 git에 대한 경험이 없지만, 분산 VC 인 Mercurial과 함께 있습니다. 프로젝트에 따라 달라 지지만, 우리의 경우 분산 VC는 기본적으로 빈번한 깨진 빌드를 제거함에 따라 프로젝트에 적합했습니다.

일부는 클라이언트 서버 VC에 더 적합하기 때문에 프로젝트에 달려 있다고 생각합니다.

여기에서 내가 좋아하지 않아에 대한 git:

첫째,내가 생각하는 분산된 아이디어에서 파리는 얼굴의 현실이다.모든 사람들이 실제로 git 을 사용하여 그는 이렇게서 중앙의 방법으로,심지어었습니다.면 커널에서 관리로 분산 방법,그 의미할 수 없었 실제로 다운로드 공식""커널 소스가 없을 것이나 나는지 결정하면 내가 원하는 라이너스'버전,또는 조의 버전 또는 법안의 버전입니다.는 분명히 말도 안되는 이유가 있는 공식적인 정의하는 라이너스 컨트롤을 사용하여 집중합니다.

는 경우 받아들이 원하는 중앙의 정의는 당신의 물건처럼 보이는 서버 및 클라이언트 역할을하는 완전히 다르다,그래서 교리는 클라이언트와 서버 소프트웨어가 동일해야합된 순수하게 제한하고 있다.교리는 클라이언트와 서버 데이터 동일해야 된다는 명백히 말도,특히 codebase 는 십 년의 역사는 아무도에 대한 관심이지만 모두가 복제.

우리가 실제로 원하는 모든 오래된 물건은 마개에 찬장을 잊고 그처럼,어떤 정상적인 VCS 않습니다.는 사실 git 풍어제와 앞으로 네트워크를 통해 모든 일은 매우 위험하기 때문에 그것을 잘라내기 위하여니다.는 잘라내는 많이 포함하의 지루한 결정을 내릴 수 있습니다.그래서 사람들은 아마도 유지 전체 시리즈의 스냅샷을 저장소에서 다양한 포인트에서 역사,그러나지 않았다는 소스 제어에 대해 첫번째 장소는?이 문제가 존재하지 않을 때까지 누군가를 발명하는 분산 모델입니다.

Git 적극적으로 장려하는 사람들 역사를 다시 쓰고 위에는 아마 그 이유 중 하나.모든 정상적인 벤처 캐피탈은 역사를 다시 쓰기 불가능한 모든 관리하고 관리자가 아무 이유 없이 그것을 고려합니다.올바른 경우,그러나 내가 알기로,자식이 제공되지 않을 부여 정상적인 사용자 쓰기 권한 있지만 반에서 그들 역사를 다시 쓰기.즉,모든 개발자는'산다'(또는 사람은 여전히 어려움을 겪고와 함께 학습 곡선을)수 있다 쓰레기통의 전체 코드 베이스입니다.우리는 어떻게 바짝 죄는 하나?잘 하나를 당신의 일반 백업 전체 역사,즉당신은 기록을 유지하 제곱,또는 당신은 금지 쓰기 권한을 제외한 모든 어떤 가난한 잔디밭을 받게 될 모든 차이점으로 이메일을 병합니다.

예를 들어 보자의 투자,대규모 프로젝트와 어떻게 볼 git 은 그들을 위해 일하고:안드로이드.저는 일단하기로 결정했으로 플레이드 시스템 자체.나는 것을 발견했는데 무리를 사용하여 스크립트라고 repo 에서 얻을 수신할 수 있습니다..일부의 저장소에서 실행되는 클라이언트와 어떤 서버에 있지만,모두,그들의 존재,은 보여주는 사실을 자식은 불완전한 중 하나에서 용량입니다.무슨 일이 일어났는지 못했을 끌어 원본에 대해 주고 그게 전부입니다.나는 것이 있었을 끌어 진정한 방대한 양의 데이터는 여러 가지 서로 다른 저장소하지만,서버 과부하로 나 같은 사람들.Repo 었다가 시간 초과할 수 없었던 부분부터 다시 시작했다 시간이 초과되었습니다.는 경우 자식은 너무 배포,생각하는 그들이 몇 가지 종류의 peer-to-peer 일을 완화하는 서버입니다.Git 은 배포하지만,서버가 있습니다.Git+repo 은 서버지만,repo 지 않은 배포 왜냐하면 그것은 단지 임시의 컬렉션을 해킹.

유사한 그림의 git 의 부족함은 gitolite(과 그 조상에는 분명히 작동하지 않았습니다.) Gitolite 에 대해 설명합적으로 작업을 완화의 배포 은 서버.다시 존재 이 일에 증명하는 자식은 아니 server,더 이상 그것은 클라이언트입니다.무엇보다,그것은 결코 것이기 때문에,경우로 성장한 어느 것을 배신 그것의 건국이 원칙입니다.

는 경우에도 당신을 믿는 분산된 것,git 여전히 엉망입니다.무엇을,예를 들어,는지요?그들이 말하는 암시적으로 만들 지점 때마다 저장소를 clone,유지되고 있는 것과 같은 일에 지점을 하나의합니다.그래서 그는 적어도 두 개의 서로 다른 것이라고 가지입니다.하지만,당신은 또한 뒤에서 repo 고 편집을 시작합니다.는 다음과 같은 두 번째 유형의 지점 또는 다른 뭔가요?어쩌면 그것을 따라 어떤 유형의 리포트를 당신-oh yes-명 repo 매우 명확한 개념이다.가 있는 것과 벌거벗은 것들입니다.할 수 없습 밀어를 정상적인 중 하나이기 때문에 벌거벗은 부분을 얻을 수 있습과 동기화 해당 소스 트리입니다.하지만 당신은 할 수 없습 cvsimport 을 벌거벗은 왜냐하면 그들은 생각하지 않았습니다.그래서 당신은 cvsimport 정상적인 중 하나는,복제는 벌거벗은 하나 개발자들과 cvsexport 는 cvs 작업 사본에는 여전히 확인할 수 있으로 cvs.할 수 있습니다?어디서 이러한 모든 합병증이에서 오는가?에서 배포되는 아이디어 자체입니다.나는 버림 gitolite 기 때문에 결국 그것을 부과 더 많은 이들에 대한 제한 나.

Git 는 분기 빛이 있어야 하지만,많은 기업이 이미 심각한 악당 문제점 그래서 내가 생각하는 분야 중대한 결정과 엄격한 치안을 유지.이것은 억지로 정말 빛나는...

에서 억지로 당신이 필요가 거의 가지할 수 있기 때문에 저글링합에서 매우 민첩한 방법입니다.예를 들어,일반적인 워크플로 있는 동기화할 마지막으로 알려진 버전에서 본선에,그의 기능입니다.때마다 당신이 시도하는 파일을 수정하고,비교는 파일에 추가는"기본 변경 집합".하려고 할 때 에서 확인하 집합이,그것은 자동으로 병합하려고 합 뉴스에서 본선으로 집합(을 효과적으로 리베이스)및 그가한다.이 워크플로를 시행 중에도 그것을 이해합니다.메인라인에 따라서 수집의 역사를 변경할 수 있는 아주 쉽게 선택에 당신의 방법을 통해니다.예를 들어,당신이 되돌리려 오래된 중 하나는,말,하기 전에 하나기 전에 마지막입니다.당신은 동기화하는 순간 전에 잘못된 변경,마가 영향을 받는 파일의 일환으로 변경 집합,동기화하는 순간 후 및 병합으로"항상 내".(뭔가가 매우 흥미있:동기화를 의미하지 않는 것으면 파일을 편집 가능한(i.eactive 변경 집합)지 않을 것이 사방에 의해하기로 표시되 때문에 대한 해결.) 이제 당신은 변경 목록을 취소합니다 잘못된 하나입니다.병합 이후의 뉴스와 있 변경 목록할 수 있는 풍덩에서 최고의 주류가 원하는 효과를 얻을 수 있다.에서 우리가 다시 모든 역사입니다.

지금,동반 방법을 통해 이 프로세스가 실행까지 당신과 당신에게 말하기는 모든 것을 버리고 일부 버그 수정.당신은 단지 당신의 기본 이름을 변경 목록(수 실제로)다음에"일시 중지"그것을 수정,버그에서 이 비어 있는 기본 변경 목록,commit 그것은,그리고 다시 시작된 변경 목록.그것은 전형적인 여러 changelists 중단 시간에 당신을 시도는 다른 것입니다.그것은 간단하고 프라이빗.당신은 무엇을 얻을 당신이 정말로 원하는 지점에서 정권이 없는 유혹을 지연 또는 닭고기의 병합하는 메인 라인.

나는 것을 이론적으로 가능하에서 비슷한 git,그러나 자식은 실질적으로 아무것도 가능하기보다는 주장한 워크플로 우리의 승인입니다.중앙 집중식 모델은 무리의 유효한 단순화에 상대적인 분산 모델을 사용하는 잘못된 일반화.그것은 그래서 overgeneralised 는 기본적으로 당신을 기대하고 구현하 제어 소스에 그것의 상단으로,repo 않습니다.

다른 것은 복제입니다.Git 을 사용하면,무엇이든 가능한 그래서 당신은 그것을 파악해야한다.에서 억지로,당신은 당신을 얻을 효과적으로 무시오.만 구성을 알 필요가있는 마스터하고,클라이언트는 지점에서 하나 마스터 또는 캐쉬에서 자신의 재량에 따릅니다.는 다섯 분 일하고 있습니다.

당신은 또한 트리거 및 사용자 정의 형태에 대한 주장하는 코드 리뷰 bugzilla 참조 등,그리고 물론,당신이 가지한 경우 실제로 그들이 필요합니다.그것은 클리어 케이스,하지만 그것은 부근에 자리 잡고 있습니다,그것은 죽은 쉽게 설치 및 유지 관리합니다.

모두 모두,그 생각을 알고 있는 경우에 당신은 작업에서 중앙의 방법으로,이는 모두가 않습니다,당신이뿐만 아니라 사용하는 도구로 설계되었는 마음입니다.Git 평가하기 때문에 리누스의'무시 무시한 지혜와 함께 사람들의하는 추세에 따라 각각 다른 주위는 다 양 같아서지만,그것의 주요한 존재 이유지 않는 실제로 서 일반적인 감각,그리고 다음으로,그것 git 관계를 자신의 손과 함께 거대한 두 개의 교리는(a)소프트웨어 및(b)데이터를 동일 모두에서 클라이언트와 서버는 것입니다 항상 그것은 복잡하고 절에서는 중앙에서 관리되는 작업입니다.

잘못된 코드 라인 관리를 대신하여 git을 사용하는 것이 일반적입니다. Perforce의 많은 단점은 나쁜 분기 전략의 결과입니다. 다른 중앙 집중식 도구에 대해서도 동일합니다. 당신이 많은 지점을 만들어야한다면 당신은 뭔가 잘못하고 있습니다. 개발자가 왜 그렇게 많은 지점을 만들어야합니까?

또한, 어쨌든 연결이 끊어지는 이유는 무엇입니까? 누군가가 기차에서 일할 수 있습니까? 요즘 무선 연결을 얻을 수없는 유일한 곳입니다. 그리고 대부분의 열차조차도 괜찮은 와이파이가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top