나는 내 개인적인 경험에 의해 뒷받침되는 힌트를 줄 것이다.
경험이 있지만 팀원 중 한 명이 SVN을 실제로 이해하지 못합니다. 당연히 SVN의 대양을 묘사하는 그의 정신지도의 빈 공간은 오히려 이상한 사용 패턴을 채택하게합니다.
예를 들어, "서버 당 디스크 공간이 부족해지기 때문에 개발자 당 하루에 1 SVN 커밋"정책을 선언했습니다. SVN 커밋이 전체 사본이 아닌 델타라고 설명했을 때 그는 의심의 여지없이 대답했으며 오늘날까지도 그것이 무엇을 의미하는지 완전히 확신하지 못합니다.
디스크 공간에 문제가 있어도 한 번에 많은 파일을 한 번에 커밋 할 수 있으므로 잘못된 해결책이라고 생각합니다. 또한 SVN은 이진 파일에 대한 델타를 저장하지 않기 때문에 큰 이진 파일을 체크인하여 많은 공간을 낭비 할 수 있습니다. 또한 하루에 한 번 이상의 버그를 수정하는 경우 같이 속하지 않은 변경 사항을 커밋해야하므로 하루에 한 번 체크인하는 것도 좋지 않습니다.
우리 회사에서 채택한 솔루션은 이진 파일을 포함하는 커밋을 거부하는 필터가 있다는 것입니다. 체크인 주석에 특수 키워드를 사용하여 커밋을 강제 실행할 수 있습니다 (SVN에 우리가하는 일을 알고 있음을 보여 주어야 함). 1 ~ 2 년에 한 번 프로젝트 관리자가 오래된 브랜치를 보관하고 리포지토리에서 제거합니다. 이 전략으로 우리는 내가 아는 공간 문제가 없습니다 (저희 저장소는 여러 가지 다른 프로젝트를 지원하고 100000 개가 넘는 개정이 있습니다).
요약하면 디스크 공간이 중요한 문제라는 데 동의한다고 말할 수 있지만 반면에
- 하나의 모 놀리 식 일일 체크인 대신 기능 관련 체크인의 중요성;
- 사실 하루에 하나의 큰 이진 파일을 체크인하면 어쨌든 디스크를 채울 수 있습니다.
그런 다음 디스크 공간 사용을 제어하는 전략 (예 : 이진 파일 필터, 정기 백업 및 사용하지 않는 오래된 분기 정리)에 대해 논의하기위한 회의 (다른 개발자 또는 시스템 관리자와도 가능)를 제안 할 수 있습니다.
또한 SVN에 Eclipse .project 구성을 포함할지에 대한 열띤 논쟁이있었습니다. 팀원은 수많은 무의미한 갈등이 발생했지만 우리는해야한다고 주장했습니다. SVN에 개별 개발자 구성 파일을 유지하는 데 반대했습니다. 마지막으로, 팀원은 모든 커밋 후에 전체 소스 트리를 다시 체크 아웃하여 "리포지토리에 커밋 된 코드"를 확인하는 관행을 가지고 있음이 밝혀졌습니다. 이것이 그가 SVN에서 프로젝트 구성을 유지하는 데 너무 단호한 이유 였기 때문에 프로젝트를 쉽게 다시 가져올 수 있습니다. 커밋이 작업 복사본을 바이트 단위의 원격 바이트로 동기화하여 다시 체크 아웃 할 필요가 없다고 설명했을 때, 팀원은 다시 의심을 품고 결국 전체 문제를 중요하지 않은 것으로 흔들 었습니다.
우리 팀은 SCM과 전혀 공유 할 필요가없는 개발자 별 설정 만 포함하는 프로젝트 구성 파일에서 SVN 충돌을 해결함으로써 시간을 낭비한다고 생각합니다. 누군가가 잘못된 가정에 따라 프로세스를 조정했기 때문에이 모든 혼란.
빌드 서버를 사용하십니까? 우리는 완전한 프로젝트를 체크 아웃하고 매일 밤 컴파일하는 빌드 서버를 가지고 있습니다. 다음 날 아침 테스터는 테스트 준비가 완료된 제품의 설치 프로그램 (마스터 빌드가 올바르게 실행 된 경우)을 가지고 있으며 우리 (개발자)는 모든 경고 (및 오류가있는 경우 오류)가 포함 된 빌드 보고서를받습니다. 물론, 당신은 각 개발자는 다음 프로젝트의 나머지와 함께 그들을 확인할 수 있습니다. 빌드 서버에 대한 표준 구성 파일을 설정하고 그들을 확인해야하지만,이 체크인 할 수 없습니다 모든 로컬 변경.
이 시나리오에서는 전체 프로젝트를 체크 아웃하고 언제든지 빌드 할 수 있어야합니다. 또한 제품의 일부가 아니기 때문에 먼저 확인하지 말아야 할 변경 사항을 병합하는 데 시간을 소비하지 마십시오. 제품은 마스터 빌드이므로 깨끗하게 유지해야합니다. 누군가 마스터 빌드를 중단하면 (예 : 자신의 .project 파일 체크인) 변경 사항을 되돌 리거나 개발자가 문제를 해결하도록 강제 할 수 있습니다.
그가 문제를 다시 제기한다면, 다른 개발자들과 함께 회의를하고 공통된 전략을 함께 찾도록 제안 할 수 있습니다.
자신을 연로 한 팀원이 SVN 기본 사항을 더 잘 이해하도록 설득하려면 어떻게해야합니까?
최선의 전략은 갈등을 개인 수준으로 가져 가지 말고 당면한 문제와 가능한 해결책을 논의하는 것입니다. 그가 개인적 대결을 찾고 있다는 인상을 받았다면 다음과 같은 제안이 있습니다.
- 팀 역학은 어떻습니까? 다른 동료들도이 팀 동료와 비슷한 경험을합니까? 팀이 특정 행동 (작은 농담이나 관찰)을 억제하고 건설적인 대립을 장려 (회의 제안 또는 커피 브레이크 중 비공식적으로 주제를 제기) ). 때로는 좋은 팀이 방해 요소를 신속하게 격리하고 상황을 정상으로 되돌릴 수 있습니다.
- 인사 관리가 얼마나 좋습니까? 우리 회사에는 한 건의 분쟁이 있었으며 상황을 해결하기 위해 인사 책임자가 개입해야했습니다. 그것은 좋지 않았지만 때로는 작업 분위기가 너무 나빠져서 스스로 나아지지 않을 수도 있습니다. 나는 이것이 당신의 사건이 아니기를 바란다.
왜 이것을 쓰고 있습니까? 당신은 "SVN 기본에 대해 더 잘 이해하기 위해 자신을 연로 한 팀원에게 확신 시키려고"하고 싶다고 말합니다. 나에게는 갈등이 너무 개인적인 것처럼 들리는 것 같습니다. 일부 심리학자들은 우리 의사 소통의 70 %가 정서적 수준에 있다고 주장합니다.이 수준이 효과가 없다면 사람들은 감정을 다루는데 너무 바빠서 사실에 대해 말하기를 중단합니다.
따라서 요점을 설명하는 것 외에도 의사 소통을 향상시키기 위해 무언가를 시도 할 수도 있습니다. 커피와 함께 점심을 먹거나 함께 휴식을 취하거나 업무와 관련이없는 주제에 대해 짧은 대화를 나누면 의사 소통을 개선하고 동료의 관심 을 이해하기 원하는 중요한 사실로 되돌릴 수 있습니다. 그가 이런 종류의 의사 소통을 받아 들였다면, 지금까지 겪었던 갈등은 당신이 서로를 잘 알지 못하고 약간의 오해가 있었음에도 불구하고 건설적인 협력을 구축하기 위해 열려있을 가능성이 있습니다. 그가 거절한다면, 그의 편에는 더 큰 적대감이있을 수 있습니다.
이 경우 역할이 명확해질 때까지 기다려야한다고 생각합니다. 당신의 팀원이 당신보다 공식적으로 더 높은 순위를 가지지 않는다면, 당신의 일을 개선하려는 시도에 짜증을내는 것은 아무 의미가 없습니다. 시간이 지남에 따라 그는 자신이 더 잘 알고 있음을 나타내려고 계속 노력한다면 그것을 받아들이거나 자신을 속 여야합니다. 만약 그가 더 높은 순위를 가지고 있다면 , 당신은 이것이 논의 중이 아님을 이해할 수있는 방법을 찾아야합니다. 당신의 관찰은 생산성을 향상시키고 그의 위치를 훼손하지 않는 것을 목표로합니다. 이것은 100 % 명확해야합니다. 역할이 명확 해지더라도 건설적인 제안이나 비판을 받아 들일 수 없다면 자부심이나 그와 비슷한 문제가 실제로 있어야합니다.
따라서 위의 모든 전략이 실패하고 좌절감을 느끼는 경우, 합리적인 방법은 물건을 포장하고 더 좋은 곳을 찾는 것입니다. 나는 3 년 전에이 경험을했고 지금 훨씬 만족스러운 회사를 찾았습니다. 어쩌면 이것은 당신의 경우가 아니지만 (물론 희망하지는 않지만)이 점을 이해하려고 노력하십시오.
그냥 내 2 센트.