Zacząłem używać SVN około 9 miesięcy temu i co najmniej zmieniło grę. Chociaż czuję, że wciąż jestem trochę zagubiony. Wydaje mi się, że jest o wiele więcej rzeczy, które muszę wykorzystać, aby naprawdę przyspieszyć tworzenie aplikacji.
Na przykład
Chciałbym móc poddać kwarantannie wszelkie niestabilne / poważne zmiany w jakimś rodzaju „sub-repozytorium” lub coś w tym rodzaju. Uważam, że poważne zmiany utrudniają drobne poprawki błędów, które są bardzo pilne. Jak mogę wypchnąć jedną prostą aktualizację bez wypychania niekompletnego lub uszkodzonego kodu?
version-control
Derek Adair
źródło
źródło
Odpowiedzi:
Aby zaadresować swój przykład, masz trzy możliwości:
svn commit file1 path1/file2 path2
aby zatwierdzić plik1, ścieżkę1 / plik2 i każdą zmianę w ścieżce2.svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X
. Teraz możesz przełączyć kopię roboczą do nowej lokalizacji: przełącznik svnsvn switch svn://hostname/projectname/branches/branch-for-feature-X
. Jeśli przełączysz się w tryb naprawiania błędów, zatwierdzasz rzeczywiste zmiany, przełączasz kopię roboczą z powrotem do linii głównej, naprawiasz błąd i zatwierdzasz, a następnie przełączasz kopię roboczą z powrotem do gałęzi funkcji. Jeśli jesteś gotowy na rozwój tej funkcji, możesz połączyć ją z powrotem do linii głównej.W opisanym prostym przypadku zwykle używasz numeru 1 (używam najczęściej), czasem nr 2. Praca z gałęziami (przypadek nr 3) jest bardziej skomplikowana ( czytaj więcej ), ale pozwala na więcej sztuczek. Ale gałęzie pasujące do twojego opisu podrepozytorium.
Poza twoim przykładem niewiele mogę powiedzieć. Subversion ma wiele rzeczy, ale nie wiem, czego już używasz i czego potrzebujesz do swojego projektu. Aby dowiedzieć się więcej o SVN, SVN-Book jest doskonałym źródłem: http://svnbook.red-bean.com/
źródło
Możesz pobrać kod do różnych piaskownic zamiast pobierać jedną kopię i wprowadzać tam wszystkie zmiany.
Więc możesz mieć strukturę folderów, która wygląda mniej więcej tak:
itp.
Wszystkie można wyewidencjonować z tej samej lokalizacji w Twojej SVN, np
http://mysvnrepo/trunk
.W ten sposób możesz zatwierdzić z poziomu piaskownicy naprawiania błędów bez wpływu na te rozwijające funkcje, chociaż musisz uruchomić
svn update
z innych piaskownic, aby zatwierdzić zmiany dotyczące poprawki błędu.źródło
Czy w ogóle spojrzałeś na gałęzie Subversion ?
Jedną z powszechnych technik jest utrzymanie stabilności Trunk, stosując krytyczne poprawki zgodnie z wymaganiami. Następnie tworzysz gałąź dla każdego nowego znaczącego dzieła. Programiści pracujący nad tym projektem sprawdzają oddział i zobowiązują się do niego. Nie wpływa to na pień, dopóki nie zdecydujesz się połączyć gałęzi z powrotem do pnia głównego w ramach ostatecznej integracji.
Innym podejściem jest posiadanie gałęzi dla konkretnego wydania, aby uniknąć przypadkowej pracy nad linią powodującą problemy. Możesz naprawić błąd „Release Branch” zgodnie z wymaganiami, a następnie złożyć poprawki z powrotem do bagażnika, gdy będą gotowe.
Twoi programiści mogą pobrać wiele kopii roboczych - pień i dowolne gałęzie - lub mogą przełączać się między pniem a określoną gałęzią za pomocą
svn switch
polecenia.Nie polecam posiadania wielu „roboczych piaskownic” kopii roboczych, które przechowujesz osobno przy kasie, ponieważ (a) zabrania to współpracy z innymi i (b) zbyt łatwo będzie przypadkowo wprowadzić niedziałające, ale jeszcze zmiany w głównej części.
źródło
Obecny rozmiar mojej kopii roboczej wynosi 10 GB, z ponad 50 000 plików. Mogę mieć kilka kopii dla różnych gałęzi, ale tworzenie nowej kopii zajmuje trochę czasu!
Kiedy pojawia się pilny błąd, zwykle zapisuję wszystkie zmiany w łatce, wszystko cofam, pracuję nad błędem i zatwierdzam, a następnie stosuję zapisaną łatkę ... O wiele łatwiejsze i szybsze niż uzyskanie nowej kopii roboczej. Gdybym musiał to robić często, miałbym dwie kopie robocze: jedną do długoterminowych zmian, drugą do naprawiania błędów.
źródło