Poprawki oprogramowania

Opublikowane: 01/12/2014

w kategorii Zasoby.

Wstęp

Proces wprowadzania poprawek ("paczowanie") ogólnie oznacza aktualizację części oprogramowania (a nie całości). Czasami nie jesteś w stanie bezpośrednio zaktualizować oprogramowania. Lub chcesz dystrybuować swoje zmiany do innych ludzi (ale tylko zmiany, nie cały kod). Na przykład aby zainstalować Twoje zmiany ktoś musi zmodyfikować bezpośrednio swoją wersję modułu (która może być już zmodyfikowana z innych powodów). Lub po prostu chcesz przekazać poprawkę do bardzo dużego pakietu oprogramowania i byłoby marnotrawstwem czasu dla klientów pobieranie całego pakietu kiedy tylko kilka bajtów było modyfikowane.

W takich sytuacjach stosuje się popraki ("pacze"). Jest kilka metod aby to zrobić.

W pełni ręczna metoda (bazująca na phpBB)

Jest to metoda którą możesz użyć na dowolnym rodzaju kodów źródłowych (C++, PHP, itd.), może być wykonana ręcznie lub automatycznie. Prezentuję ją ponieważ jest metodą uniwersalną i może być użyta do różnych typów zmian oprogramowania.

Twoja paczka poprawek może zawierać kilka plików lub tylko jeden. Nazwa pliku poprawek nie jest ważna. Ale może być mówiąca coś dla użytkowników. Każdy plik składa się z listy instrukcji do wykonania w celu poprawienia oprogramowania.

Instrukcje te to:

#
#-----[ OPEN ]------------------------------------------
#
hello.h

Oznacza: otwórz plik "hello.h".

#
#-----[ FIND ]------------------------------------------
# around line 244
// limit of words to be counted
int wordLimit = aWordLimit;

Oznacza: znajdź linię opisaną w instrukcji

#
#-----[ BEFORE, ADD]--------------------------------------
#
assert(aWordLimit < 10);

Oznacza: wstaw następujący kod przed blokiem kodu który został odnaleziony

#
#-----[ AFTER ADD]------------------------------------------
#
if (wordLimit == 0) 
  return 0;

Oznacza: wstaw następujący kod za kodem który został znaleziony

#
#-----[ REPLACE WITH ]------------------------------------------
#
// limit of words to be counted
int wordLimit = (aWordLimit < 0)?0:aWordLimit;

Oznacza: zastąp znaleziony kod kodem podanym pod instrukcją

#
#-----[ COPY ]------------------------------------------
#
copy mail_config.h to common/include/mail_config.h
copy mail.cpp to plugins/mail/mail.cpp

Oznacza: skopiuj pliki z katalogu paczki poprawek do głównego katalogu aplikacji (lub jej podkatalogu).

#
#-----[ DIY INSTRUCTIONS ]------------------------------------------
#
rename folder "backup" to "backup_old"

Oznacza: wykonaj akcję niestandardową opisaną w instrukcji.

#
#-----[ SQL ]------------------------------------------
#
CREATE TABLE `mail_config` (
  `param_name` varchar(100) NOT NULL default '',
  `param_value` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`param_name`)
);

Oznacza: wykonaj komendę SQL na bazie powiązanej z aktualizowanym oprogramowaniem.

Istnieją również wersje tych komend do znajdowania i poprawiania kodu wewnątrz linii (z prefiksem "IN-LINE") - zobacz link poniżej.

Zasoby

Metoda diff/patch

Ta metoda używana jest przez różne pakiety Open Source od długiego czasu. Jest to metoda automatyczna. Jest wiele informacji na ten temat dostępnych w internecie, ale najważniejsze komendy to:

# 
# generuje plik .patch który można dystrybuować
#
diff -ruN /path-to/base/file.c my-version/file.c > file.c.patch

# 
# zastosuj plik poprawek do pliku w aktualnym katalogu
# 
patch -p5 < file.c.patch

Zasoby

Metoda GIT

Git tak jak wiele innych systemów kontroli wersji może automatycznie przygotować paczkę poprawek bazując na kodzie który przechowujesz w bazie git. Zobacz zasoby poniżej:

Zasoby

Metoda SVN

Metoda CVS

Eclipse

Poprawki binarne

Kiedy potrzebujesz poprawić pliki binarne:

Inne narzędzia

  • WinMerge - narzędzie do porównywania plików z możliwością generacji poprawek (Tools -> Generate patch)

Zobacz również

Udostępnij

obserwuj