2009-09-21 19 views
16

Pracuję z bardzo złożonym projektem Flash, który jest częścią pełnego zakresu usług, które wdrażamy na potrzeby naszych klientów. W przypadku większości naszych źródeł oprogramowania (Java, PHP, JavaScript, HTML i niektórych skryptów pomocniczych w innych językach) używamy subversion do kontroli wersji i zarządzania nimi, więc robimy to samo w przypadku naszych projektów Flash, mimo że zyskujemy niewielkie korzyści z wersji kontrolowanie tego (z wyjątkiem możliwości powrotu do poprzednich wersji) w postaci plików FLA są przechowywane jako pliki binarne, z których nie można uzyskać istotnych różnic.Kontrola wersji dla projektów Adobe Flash

W pliku AS umieszczamy jak najwięcej kodu, który możemy odpowiednio zarządzać za pomocą subversion, ale ze względu na wymagania naszej architektury i strategii wdrażania (nie możemy zmienić ze względu na potrzeby naszych klientów), nadal utrzymujemy dużą kolekcję plików FLA, którymi musimy zarządzać.

Spojrzałem na Adobe Version Cue i choć nie bardzo rozumiem, co robi w kwestii kontroli wersji, przeniesienie naszych projektów Flash do hostingu w wersji Cue da mi lepszą kontrolę, niż obecnie otrzymuję od Subversion?

Ponadto, jeśli ludzie będą mogli podzielić się swoimi doświadczeniami i sugestiami dotyczącymi kontroli wersji projektów Flash, będzie to bardzo pomocne.

Odpowiedz

15

Mam zmagał się z tym, i nie mogę powiedzieć nic innego niż:

  1. żaden kod w Flas, kiedykolwiek
  2. zawartość Divide semantycznie na oddzielne pliki FLA gdzie odpowiednie
  3. Make dokument zmiany dla umów FLA i wprowadź notatkę dla każdej pojedynczej zmiany.

Pierwszy punkt jest wystarczająco oczywisty. Drugim jest rozpoznanie, że nie ma obawy, że FLA są binarnymi obiektami blobowymi, które przechowują wszystkie twoje zasoby wizualne i nie grają dobrze z wersjonowaniem, ale możesz rozpoznać fakt, że niektóre treści zmieniają się często, podczas gdy inne wydają się być tworzone raz. a następnie pozostawiony samemu sobie. Dzieląc swoje zasoby na różne pliki FLA, można zachować znaczną większość zmian w niewielkiej liczbie niestabilnych umów FLA, a różnica między stabilną i niestabilną zawartością zostanie odzwierciedlona w plikach z wersjami.

Należy pamiętać, że nawet jeśli nie można załadować zasobów w czasie wykonywania, współdzielenie w czasie kompilacji nadal pozwala dzielić zasoby na dowolną liczbę umów FLA. (Współdzielenie w czasie kompilacji jest często pomijane - jeśli nie jesteś obeznany z tym, otwórz właściwości MovieClip i sprawdź sekcję "Źródło" na dole). Jak podzielić rzeczy, zależy od twojego projektu. Najlepsze, co mogę zasugerować, to tworzenie podziałów semantycznie - być może jeden FLA dla każdej postaci lub jeden FLA dla każdej sekcji lub jeden FLA dla każdego elementu interfejsu itd. Tak jak w przypadku całego rozwoju, celem jest grupowanie powiązanych zasobów i eliminowanie duplikacji.

Trzeci punkt, ponieważ różnice są niemożliwe, nie ma możliwości obejścia dokumentu zmiany. Moim preferowanym sposobem jest sprawdzenie umów typu FLA w wersjach i zanotowanie wszystkich zmian w notatce dotyczącej zameldowania, ale zmiany mogą również występować w oddzielnym dokumencie. (Zauważ, że ważne jest, aby zachować biblioteki w każdym FLA uporządkowane, lub osoba czytająca opis zmiany będzie miała problem ze znalezieniem zmiany.) Jednak ponieważ może to być uciążliwe dla niektórych treści, warto również oznaczyć określone FLA jako " niestabilny "i nie przejmuj się listą zmian. Ale jeśli takie pliki mają wiele zależności od innych plików, pożałujesz tego później.

Niestety, to wszystko, co odkryłem do tej pory. Adobe rozmawiało o zmianie formatu FLA na tekst w przyszłej wersji, ale do tego czasu nie ma łatwego rozwiązania.

+0

Twoje notatki są bardzo przydatne, dzięki. Nie ma mowy, że poproszę deweloperów o utrzymanie dokumentu zmiany - będzie to zbyt duże obciążenie i nikt tego nie zrobi (poważnie lub wcale). Moim celem jest uzyskanie kontroli bez zwiększania obciążenia programisty. Mam trudności z nakłonieniem ludzi do pisania znaczących komentarzy w swoich zatwierdzeniach :-(. Dziennik zmian mógł być dobrym dokumentem zmiany, gdyby nie fakt, że pliki stają się przestarzałe, usunięte i zastąpione nowym kodem – Guss

+0

Cóż, musisz pracować z tym, nad czym pracujesz. Nie zachowałem szczegółowych dokumentów zmian, dopóki plik nie był mniej więcej kompletny - tak więc udokumentowałem tylko zmiany i poprawki błędów, a nie wstępny rozwój. dobrze - tak jak powiedziałem, to tam udokumentowałem moje zmiany – fenomas

+0

Dzięki fenomas - przyjmuję twoją odpowiedź, ponieważ (a) jej najbardziej szczegółowe i ... dobrze .. najlepsze; (b) nikt nie wymyślił coś nowego od jakiegoś czasu i (c) - odsuwam się od całego problemu ... – Guss

1

Z tego, co rozumiem w Adobe Version Cue, nie dostaniesz niczego poza tym, co svn Ci daje. (Oczywiście, słyszałem tylko historie o horrorze Version Cue i nie używałem ich.)

Pracowałem nad dużymi projektami Flash z svn wcześniej (duże zespoły i duże wdrożenia), najlepsza rada, którą mogę dać jesteś:

  • Dobra, twój klient żąda wszystkich tych FLA, ale dlaczego? Być może już to zrobiliście, ale spróbujcie odeprzeć nieco swoje wymagania techniczne - co oni sądzą, że czerpią z tego wymagania?

  • Wyznacz ONE osobę, która będzie menedżerem release dla aplikacji Flash. Będą odpowiedzialni za sprawdzenie poprawnego kodu z svn, zbudowanie go i upewnienie się, że dostanie się do ogólnego zastosowania aplikacji. Będą również odpowiedzią na pytanie, która wersja jest w danym środowisku (można to łatwo zautomatyzować).

  • Umieść jak najmniej kodu i zasobów w FLA. Powinieneś ładować obrazy i inne zasoby z zewnętrznych źródeł, a następnie dołączać je do odpowiednich MC i Sprites.

  • Jeśli to możliwe, trzymaj drużyny w małych, dyskretnych porcjach. Zmniejsza to szanse na sprzeczne zmiany w FLA i zwiększa szanse na to, aby wszyscy wiedzieli, co się dzieje.

  • [Więcej informacji o przepustowości mniej związanych z tym pytaniem] Traktuj swoje FLA jak biblioteki lub pakiety SDK, jeśli to w ogóle możliwe. Jeśli ich zapotrzebowanie jest zbliżone do "jednego podfLA w przeliczeniu na stronę" z wzorcowym FLA, należy dodać dodatkowe podflekty FLA, które przechowują zasoby/widżety. W ten sposób strony FLA będą zawierały tylko kod strony i nie będzie ponownego ładowania widżetów za każdym razem, gdy "zmienisz strony". (Zakłada, że ​​nie ma odświeżania przeglądarki między przełącznikami stron.)

Warto zauważyć, że są to głównie nietechniczne rozwiązania. Muszę jeszcze znaleźć "zabicie jednego strzału" za problem z pracą z plikami binarnymi w systemach kontroli wersji - szczególnie pliki binarne, które są naprawdę kodem źródłowym. I to jest właśnie klinkier: pomysł przechowywania kodu źródłowego w zastrzeżonym formacie binarnym, który można skompilować tylko w innym autorskim formacie, jest złym voodoo.

+0

Dziękuję za odpowiedź. Odnośnie wymagań dla FLA - jest to bardziej wymóg dla określonego namin Konwencje dla wyjściowych plików SWF, które wywołują nasi klienci, tworzą ich kod i nie możemy zmienić architektury wdrożenia z powodu wymogu kompatybilności wstecznej. – Guss

2

Brzmi jak utkniesz z plikami FLA ze względu na wymagania zewnętrznych, ale tylko w przypadku ...

Jeśli budowania projektu Flash Code-ciężki, pójdę z czystym ActionScript lub Flex podejście, używanie plików .fla tylko dla tego, do czego są one dobre (animacja oparta na osi czasu)

Flex Builder/Flash Builder to świetne środowisko do tworzenia projektów Flash, w których cały kod jest w formacie przyjaznym dla źródła.

Jesteśmy w trakcie przenoszenia wszystkich odtwarzaczy multimedialnych opartych na FLA do MXML (gdzie przydatne są komponenty Flex UI) i czystych projektów ActionScipt. Korzyści z kontroli źródła Thje są ogromne.

Jeśli to nie jest możliwe, to obawiam się, że jedyną rzeczą, którą można zrobić, to przenieść możliwie najwięcej z FLA - format binarny nie jest po prostu przyjazny dla kodu źródłowego.

Zapomnij Version Cue - Adobe nie rozwijać tego dłużej (nie jest uwzględniony w nowych pakietach CS5)

1

Starałem się wymyślić sposób, aby rozwiązać ten sam problem, tutaj jest to możliwe rozwiązanie. .fla są rzeczywistymi systemami plików. Jeśli zamienisz rozszerzenie .fla na .zip, możesz rozpakować i odsłonić nieskompresowane pliki, w przeciwieństwie do "pokaż zawartość paczki" na mac. Cała zawartość biblioteki znajduje się w katalogu biblioteki z każdym klipem filmowym reprezentowanym przez dokument xml, przy czym każda warstwa otrzymuje węzeł i ramki w warstwie są reprezentowane jako węzły potomne. Istnieje również plik .xfl, który jest nieskompresowaną wersją pliku .fla, który można uruchomić w pamięci flash, o ile cała rozpakowana zawartość pliku .fla znajduje się w tym samym katalogu co .xfl

Technicznie ty powinien móc pracować nad plikiem .xfl z całą zawartością biblioteki, która jest śledzona i utrzymywana w subwersji.

11

Odpowiedź Adobe na to jest w nowym Flash CS5. Użyj "zapisz jako" i wybierz .xfl z typów rozwijanych. Możesz teraz pracować nad swoim projektem i sprawdzić go za pomocą SVN. Wciąż wyłamałbym twój kod z plików .as, ale w ten sposób śledzone są również zasoby biblioteki. Zasadniczo zachowuje wszystko w sposób podobny do xml jak flex mxml. Myślę, że to twoja najlepsza opcja.

+0

Dzięki, nie wiedziałem o tym. –