각 릴리스에서 여러 기능을 대상으로하는 대형 프로젝트에서 작업한다고 가정 해 보겠습니다. 우리는 각 기능 개발을 위해 VCS에서 다른 기능 분기를 가질 수 있습니다. 그러나 모든 지형지 물이 분기되고 통합이 완료되면 기능 중 하나가 삭제됩니다 (이는 조직에서 상상할 수없는 것보다 자주 발생합니다). 이 시점에서 기능을 롤백 할 수 있습니까? 우리가 일반적으로하는 일은 모든 코드 변경을 파악하고 수동으로 롤백하는 것입니다. 이러한 노력을 줄이는 데 도움이되는 프로세스/모범 사례가 있습니까? 기록을 위해, 우리는 VCS로 파괴를 가진 자바 프로젝트를 가지고 있습니다.마지막 순간에 기능을 삭제하면 어떻게됩니까?
답변
기능을 삭제 한 이유에 따라 다릅니다.
"마지막 순간"이 시스템 테스트 중에 있고 그것을 반복하지 않으려면 기능을 사용 중지하고 어쨌든 출하한다고 말하고 싶습니다.
우리는 과거에 이렇게했습니다. 이 기능을 제거하면 추가 버그를 생성하는 데 너무 위험 할 수 있습니다. 기능을 더 이상 원하지 않으면 (예를 들어 요구 사항이 사라 졌거나 구현이 잘못된 것으로 결정된 경우) 최소 코드 변경으로 스위치를 끄는 것이 위험 측면에서 더 좋습니다.
즉, 기능을 사용하도록 설정 한 UI 요소를 제거하거나 숨기면 사용자가 해당 기능을 사용할 수 없다는 것을 의미합니다 (기본적으로 사용 중지되어있는 경우).
향후 릴리스 중에 코드의 해당 부분을 리팩터링하여 기능을 제거하거나 올바르게 다시 도입 할 수있는 기회가 생길 것입니다.
거의 오른쪽 (하지만 여전히 +1)입니다. 사용 안 함, * RE-TEST *, 발송하십시오. 기능을 사용하지 않도록 설정하는 데 필요한 최소 변경을 사용하지 않도록 설정합니다. GUI 기반 시스템에서는 메뉴 항목을 비활성화하거나 제거하는 것처럼 간단 할 수 있습니다. 다른 시스템에서는 최소 변경을 알아야합니다 ... – Mawg
기능을 사용하지 않도록 설정 한 후에도 시스템 테스트를 추가로 수행해야합니다. 주로 기능을 사용 중지하여 발생하는 회귀를 확인해야합니다 (예 : 실수로 비활성화 했습니까? 일부 다른 기능)을 사용하고 기능이 실제로 비활성화되었는지 확인합니다. – MarkR
TortoiseSVN을 클라이언트로 사용하는 경우 상황에 맞는 메뉴에서 "이 개정판에서 변경 사항 롤백"권한을 갖습니다.
작업 복사본에 로그를 표시하고 리버스 병합 할 리비전 (이 경우 기능 분기에서 병합 한 위치를 나타내는 버전)을 선택하십시오.
alt text http://img64.imageshack.us/img64/9053/svnreversemerge.png
그렇지 않으면,이 역을 할 수있는 명령 줄에서 병합합니다. 리버스 병합은 HEAD 리비전에서 리버스 병합 한 리비전의 변경 사항을 뺀 새로운 리비전을 생성하므로 항상 병합을 "역전"할 수 있습니다. SVN은 그렇게 멋지다.
이 문제는 기능을 통합 한 후에 QA/UAT의 결과로 변경하게되므로 매우 복잡한 롤백이 발생한다는 것입니다. 가능한 경우 기능을 사용 중지하는 것이 훨씬 안전합니다. 특히 나중에 기능을 다시 사용할 것인지 여부에 대해 의심이가는 경우 (정직하게 말하면 고객이 기능에 코딩 시간을 할당 한 다음에 마음을 바꾼다면 이 늦은 날짜, 그들은 다음 주에 다시 마음을 바꿀 것입니다.) –
- 1. 다른 누군가가 작업하고있는 원격 지점을 삭제하면 어떻게됩니까?
- 2. C++ 피 호출자가 발신자를 삭제하면 어떻게됩니까?
- 3. 다른 뷰의 뷰가 있고 상위 뷰를 삭제하면 다른 뷰는 어떻게됩니까?
- 4. 인덱스를 먼저 삭제하지 않고 MySQL 컬럼을 삭제하면 어떻게됩니까?
- 5. OpenJMS에 큐를 추가하는 순간에
- 6. 문자열을 사용하는 순간에
- 7. 적절한 순간에 컨트롤을 업데이트하는 이벤트
- 8. 어떤 활동이 순간에 실행 중입니까?
- 9. free() 이후의 메모리는 어떻게됩니까?
- 10. iPhone에서 정확한 순간에 사운드를 재생하는 방법은 무엇입니까?
- 11. Magento는 사용자 정의 기능을 추가 할 때 어떻게됩니까?
- 12. 개체를 삭제하면 정확히 어떻게됩니까? (GCC) (때 충돌을 두 번 삭제 하시겠습니까?)
- 13. 테이블에서 삭제하면 카디널리티 위반이 발생합니다.
- 14. 기본 스트림을 삭제하면 XmlReader를 삭제해야합니까?
- 15. 를 CSV 데이터 파일을 읽고 순간에 자바
- 16. 이상한 순간에 내 WPF 응용 프로그램이 닫힙니다.
- 17. 내가 이것을 사용하고있는 순간에 선택 상자
- 18. EditText 필드에서 모든 문자를 삭제하면 강제로 닫습니다.
- 19. CVSNT는 어떻게됩니까?
- 20. 잠금 에스컬레이션 - 여기 어떻게됩니까?
- 21. netdev_open 이후에는 어떻게됩니까?
- 22. fullcalendar에 추가하면 어떻게됩니까?
- 23. 회원 기능을 친구로 만들기
- 24. J2ME를 사용하여 파일을 삭제하면 IOException이 throw됩니다.
- 25. SQL DataContext에 LINQ를 삭제하면 어떤 이점이 있습니까?
- 26. mysql에서 삭제 쿼리를 삭제하면 행이 모두 저장됩니까?
- 27. 분기에 디렉토리를 삭제하면 올바르게 병합되지 않습니다.
- 28. JFrame을 삭제하면 메모리 누수가 발생합니까? 다음과 같이
- 29. 경로에서 엔티티의 조상을 삭제하면 어떤 영향이 있습니까?
- 30. 디렉토리를 삭제하면 응용 프로그램이 다시 시작됩니다.
한 번에 하나의 기능을 병합하고 있지는 않습니다. – rerun