Jak dodać kontrolę wersji do mojego przepływu pracy?

11

Tworzę motywy, wiele z nich. Dostaję PSD, kod HTML / CSS, klepnięcie kodu w Wordpress i wprowadzanie poprawek w miarę uzyskiwania kontroli jakości. Po uruchomieniu klienci mogą edytować posty na blogu, jak zwykle, lub przesyłać zdjęcia za pomocą niestandardowej wtyczki.

Czasami muszę wprowadzić zmiany w temacie lub treści strony / postu, co oznacza, że ​​albo wprowadzę je na żywo, albo będę musiał pobrać i skonfigurować witrynę w środowisku programistycznym, które zostanie zatwierdzone przez klienta. Nie mam kopii zapasowej, nie mam kontroli wersji i zdaję sobie sprawę, że trzeba to zmienić.

Sugerowano Git i Mercurial i chciałbym skorzystać z tych narzędzi, ale nie jestem pewien, jak dopasować je do przepływu pracy.

Czy wymagam wszystkich zmian w witrynie na serwerze programistycznym, a następnie zatwierdzam je po zatwierdzeniu? Co z pisaniem postów na blogu? Wydaje się, że przesada w pisaniu postów na urządzeniu deweloperskim i wprowadzaniu zmian na żywo, ale jak mam zsynchronizować bazy danych, jeśli są one edytowane w witrynie na żywo? Przeszukałem internet. Docenione zostaną niektóre wskazówki.

bez cfree
źródło
Myślę, że to kwalifikuje się jako pytanie ekosystemu poza zakresem. Tutaj znajdziesz bieżącą dyskusję .
Chip Bennett
4
@ChipBennett Nie zgadzam się. Mile widziane są specyficzne zależności WordPress między motywami, wtyczkami i bazą danych oraz ich wpływ na ogólną praktykę programistyczną.
fuxia
@toscho Z pewnością mogłem być o tym przekonany; dlatego wskazałem na dyskusję Meta. :)
Chip Bennett

Odpowiedzi:

9

Przede wszystkim musisz wiedzieć, że istnieją tutaj dwa przepływy pracy: twój i twój klient.

Twój przepływ pracy

  • Odbierz PSD
  • Kod HTML / CSS
  • Kod WordPress szablon
  • Wdróż motyw na aktywnej stronie WordPress

Ich przepływ pracy

  • Wymyśl wymagane zmiany i wyślij e-mailem
  • Napisz posty
  • Załadować zdjęcia

Problem

Implementacja kontroli wersji tutaj nie ma absolutnie nic wspólnego z przepływem pracy twoich klientów. Chodzi o śledzenie kodu używanego w motywie WordPress. Wszystkie pliki motywów, wtyczki niestandardowe itp. Powinny znajdować się w systemie kontroli wersji (Git, Mercurial, Subversion lub cokolwiek innego, którego chcesz użyć).

Twój przepływ pracy staje się wtedy:

  • Napisz kod
  • Zatwierdź zmiany w systemie kontroli wersji
  • Przekaż zmiany do miejsca produkcji
  • Uzyskaj komentarze od klienta
  • Napisz kod
  • Zatwierdź zmiany
  • Napisz kod
  • Zatwierdź zmiany
  • Przekaż zmiany do miejsca produkcji

Pamiętaj, że chodzi o utrzymanie historii kontroli wersji kodu . Kod jest czymś, czego Twoi klienci nie powinni zmieniać - i nigdy nie powinieneś zmieniać kodu w witrynie produkcyjnej, gdy jest produkowana.

Ale zmiany treści (posty, zdjęcia itp.) Są poza zakresem systemu kontroli wersji. Innymi słowy, nie wprowadzasz zmian w rozwoju, a następnie wypychasz bazę danych do produkcji. To zła praktyka rozwojowa. Jeśli potrzebujesz zsynchronizowanych baz danych dev i prod, powinieneś rutynowo wyciągać kopię zapasową z pola produkcyjnego i przywracać lokalną wersję z tej kopii zapasowej.

Zmiany kodu przechodzą od rozwoju do produkcji.
Zmiany w bazie danych przebiegają od produkcji do rozwoju.

EAMann
źródło
Tak naprawdę nie można łatwo zsynchronizować baz danych, chyba że masz specjalny skrypt, który zarządza sposobem przechowywania danych zawartości w bazie danych. Dlatego oddzielasz kod od treści w przepływie pracy, alternatywą jest użycie serwera pomostowego lub próba użycia jednego ze skryptów synchronizacji db lub napisanie własnego.
Wyck
@EAMann Świetna odpowiedź, dziękuję! Jedyne, co chciałbym dodać do opisanego przepływu pracy, to pisanie kodu, zatwierdzanie zmian, przekazywanie do witryny programistycznej, uzyskiwanie komentarzy od klienta ... Nie rozważałem dwóch osobnych przepływów pracy, ponieważ regularnie będziemy musieli zmieniać zadowolić się dla klientów. Czasami będziemy musieli umieścić HTML w treści, aby uwzględnić specjalne żądania w treści (specjalne style itp.). Czasami wymagają one zgody klienta przed uruchomieniem, dlatego bazy danych musiałyby zostać zsynchronizowane. Czy istnieją najlepsze praktyki dla tego rodzaju konfiguracji?
cf
@ Wyck Zamiast upuszczać zawartość obok tematów, sensowne jest rozdzielenie dwóch procesów. Podoba mi się pomysł stworzenia obszaru tematycznego do tworzenia tematów i obszaru przejściowego dla upuszczania treści niezależnie od siebie. Jedyny problem, jaki widzę, to to, że klienci lubią widzieć zarówno motyw, jak i treść (witryna w całości; strony statyczne) przed uruchomieniem jej na żywo.
cf
Zwykle nie jest to kwestia synchronizacji zmian w bazie danych. Chciałem powiedzieć, że zrzucisz produkcyjną bazę danych i zastąpisz ją lokalną bazą programistyczną. To prawda, że ​​możesz zautomatyzować go za pomocą skryptu ... ale prawdopodobnie nie będziesz robić tego zbyt często.
EAMann
3
Nie ma jeszcze, czy to naprawdę cierń w boku WordPressa, ale nie jest to konkretnie problem WordPressa, ponieważ wiele CMS ma ten problem, możesz przeczytać o tym tutaj wordpress.stackexchange.com/questions/119/... bardziej szczegółowo, niektóre istnieją skrypty, ale większość z nich znajduje się w domu, ponieważ są one specyficzne dla określonego środowiska.
Wyck
1

Możesz użyć oprogramowania, które synchronizuje bazy danych. Ale istnieje również możliwość wersjonowania samych danych za pomocą czegoś takiego jak http://chronicdb.com

Gary
źródło
To wygląda interesująco; może rozwiązać kilka problemów. Sprawdzę to, dzięki.
opłat
1

Właśnie napisałem dokładną odpowiedź na to pytanie na inne pytanie. Osobiście używam git i jest fantastyczny. Jeśli chodzi o rozpoczęcie pracy, polecam sprawdzenie http://gitref.org/ i http://help.github.com/mac-set-up-git/ . Jeśli jesteś typem książki, czytałem to jedno i to zdecydowanie warte $ 22 Cena ebook. Zrób to, nie będziesz żałować tej decyzji.

Matthew Boynes
źródło
Dzięki, będę musiał wrócić do tego. Konfiguracja bazy danych master / slave brzmi interesująco. Dzięki za wskazówki
bez