6

Załóżmy, że pracujesz nad dużym projektem z wieloma funkcjami skierowanymi do każdej wersji. Możemy mieć różne gałęzie funkcjonalne (w VCS) dla każdego rozwoju funkcji. Ale po tym, jak wszystkie gałęzie funkcji są połączone i integracja jest zakończona, powiedzmy, że jedna z funkcji została odrzucona (zdarza się to częściej w naszej organizacji, niż można sobie wyobrazić). Czy istnieje sposób na przywrócenie funkcji w tym momencie? Zwykle robimy to, aby dowiedzieć się wszystkich zmian w kodzie i ręcznie wycofać. Czy masz jakieś procesy/najlepsze praktyki, które pomogą zmniejszyć ten wysiłek? Dla rekordu mamy projekt java z subversion jako VCS.Co zrobić, gdy funkcja zostanie upuszczona w ostatniej chwili?

+0

Łączy jedną funkcję naraz, a nie opcję. – rerun

Odpowiedz

5

To zależy, dlaczego upuściłeś funkcję.

Jeśli "w ostatniej chwili" jest podczas testowania systemu, a nie chcesz go powtarzać, to powiedziałbym, że po prostu wyłączysz tę funkcję i ją wyśle.

Zrobiliśmy to w przeszłości; usunięcie tej funkcji może być zbyt ryzykowne, jeśli chodzi o tworzenie dodatkowych błędów. Jeśli nie chcesz już tej funkcji (np. Wymóg zniknął, lub jeśli implementacja została uznana za niepoprawną), to prawdopodobnie lepiej pod względem ryzyka po prostu ją wyłączyć przy minimalnych zmianach kodu.

To znaczy, usuń lub ukryj elementy interfejsu użytkownika, które umożliwiają tę funkcję, wtedy użytkownicy nie będą wiedzieć, że tam są (pod warunkiem, że jest ona domyślnie wyłączona).

Mam nadzieję, że podczas przyszłej wersji będzie możliwość odświeżenia tej części kodu i albo usuń tę funkcję, albo przywróć ją poprawnie.

+0

Prawie w prawo (ale wciąż +1). Wyłącz, * RE-TEST *, a następnie wyślij. Wyłączyć z minimalną konieczną zmianą, aby wyłączyć tę funkcję. W systemie opartym na GUI może to być tak proste, jak wyłączenie lub usunięcie elementu menu. W innych systemach musisz ustalić minimalną zmianę ... – Mawg

+0

Ok, nadal będziesz musiał wykonać dalsze testy systemu po wyłączeniu tej funkcji, głównie w celu sprawdzenia regresji wprowadzonych przez wyłączenie tej funkcji (np. Przypadkowo wyłączyć inna funkcja) i upewnić się, że funkcja jest naprawdę wyłączona. – MarkR

1

Jeśli używasz TortoiseSVN jako klient, ma on "wycofać zmiany z tej wersji" bezpośrednio w menu kontekstowym.

Po prostu pokaż dziennik kopii roboczej i wybierz wersję, którą chcesz odwrócić w trybie korespondencji seryjnej (w przypadku, wersję, która reprezentuje miejsce scalenia w gałęzi elementów).

alt text http://img64.imageshack.us/img64/9053/svnreversemerge.png

przeciwnym razie można zrobić odwrotnie połączyć z linii poleceń. Odwrotne scalanie tworzy nową wersję, która jest wersją HEAD minus zmiany z wersji, która została scalona odwrotnie, dzięki czemu zawsze możesz "odwrócić" scalanie. SVN jest świetny w ten sposób.

+0

Problem polega na tym, że wprowadziłeś zmiany w wyniku QA/UAT po zintegrowaniu funkcji, więc będzie to bardzo niechlujne wycofanie. O ile to możliwe, znacznie bezpieczniej jest wyłączyć tę funkcję, zwłaszcza jeśli masz wątpliwości, czy funkcja ta powróci w późniejszym czasie (szczerze mówiąc - jeśli klienci zdecydują się na kodowanie danej funkcji i potem zmienili zdanie na w tym późnym terminie prawdopodobnie ponownie zmienią zdanie w przyszłym tygodniu). –