2012-01-23 6 views
1

나는 트랜잭션 전에 트랜잭션을 전에 적용 할 사전 커밋 고리를 작성합니다. 따라서 트랜잭션이 시작될 때 "U", "UU"또는 "D"으로 표시된 모든 파일의 내용을 cat으로 보려고합니다. 보류중인 변경 사항이 없습니다. 필자가 제공 한 트랜잭션 식별자 (두 번째 인수는 사전 커밋)를 사용하고 대시와 그 뒤에 오는 문자를 제거하고 "기본 개정"을 고려하는 것이 안전합니까? 이 정보를 얻는 더 좋은 방법이 있습니까?사전 커밋에서 트랜잭션의 기본 개정판 확인

답변

2

직접 응답은 아니요입니다. 거래 번호는 무엇이든 될 수 있습니다. 그러나 svnlook youngest <repos>은 사용자가 찾고자하는 마지막 개정을 반환합니다.

사전 커밋 후크주의 :
  • 는 시간이 오래 걸릴 일을하지 않을 있는지 확인합니다. 개발자는 완료하기 위해 사전 커밋 (pre-commit) 훅을 기다려야하며, 7 초에서 10 초 정도 걸리면 개발자는 매우 좌절감을 느낍니다.
  • 커밋중인 데이터를 변경할 수 없으며 변경할 수 없습니다. 원하는 내용과 일치하면 커밋을 허용하십시오. 그렇지 않으면 커밋을 허용하지 마십시오.
  • 합법적 인 활동이 될 수있는 것을 중단하지 않도록하십시오. 예를 들어 일부 사이트에서는 커밋 메시지에 티켓을 넣지 않는 한 누군가가 변경 사항을 커밋하지 못하도록하기 위해 미리 커밋 훅을 사용하고 해당 커밋 메시지는 해당 개발자에게 할당 된 티켓이며 해당 티켓은 열린 상태에 있습니다. 개발자가 티켓을 다른 사람에게 할당했기 때문에 개발자가 변경 사항을 커밋 할 수 없으며 할당을 변경할 수있는 유일한 사람이 일주일에 휴가를 가질 수 없다는 사실을 상상해보십시오.

연속적 통합 서버를 사용하여 사전 커밋 또는 커밋 후크보다는 커밋을 확인하는 것이 가장 좋은 경우가 있습니다. 예를 들어 개발자가 파일을 커밋하도록 허용하지만 개발자가 적절한 그룹에 속해 있지 않으면 개발 단장에게 이메일을 보낼 수 있습니다.

개발자가 올바른 작업을 수행 할 확률이 90 %입니다. 그 개발 책임자는 이미이 문제에 대해 이미 알고 있습니다. 또한 문제가있는 경우 변경 사항을 취소 할 수 있습니다.

+0

처음에는 홍조가 발생하여 경쟁 조건이 발생할 수 있습니다. 거래가 진행되는 동안 '최연소'가 변경되면 svn은 거래가 구식이고 거부 된 것으로 적절하게 결정할 것입니까? – tuckermi

+0

Subversion 저장소의 구조를 보면 Subversion의 커밋 프로세스가 한 번에 하나의 커밋 만 처리하는 것으로 보입니다. 각 개정은 이전 개정의 차이이므로 이전 개정이 확약 될 때까지 다음 개정을 확약 할 수 없습니다. 이는 특히 파일이 아닌 저장소가 수정된다는 사실입니다. 'svnlook 막내'를 붙잡는 것이 문제가되어서는 안된다. –

+0

이 답변은 Bert가 쓴 것과 약간 다른 것으로 보입니다. 실제로는 가장 최근의 개정을 보면 제가 변경중인 기본 개정판과 일치하는 내용을 제공하는 것으로 보입니다. . 변경 전의 파일 내용을보고 싶습니다. 감사. – tuckermi

0

개정이 확약 될 때까지 기본 개정은 결정되지 않습니다. 다른 변경이 동일한 노드를 변경하지 않으면 커미트가 진행되는 동안 커미트 될 수 있습니다. 커밋의 마지막 부분 만 배타적입니다.

0

그리고 마지막으로 1을 더합니다. 예 :

the_revision=$(svnlook youngest ${REPOS}) 
((the_revision++)) 
+0

코드 스 니펫만으로는 충분하지 않으며 텍스트 설명도 제공합니다! – peterh