Difference between revisions of "X-Cart:To apply a patch manually"
m |
|||
| Line 12: | Line 12: | ||
* 7 - indicates the number of lines in the changed code (after patch application) | * 7 - indicates the number of lines in the changed code (after patch application) | ||
| − | Then follows the file code that includes lines marked with the "+" and "-" signs. Lines marked with "+" are the lines that you need to add in the file to be patched. Lines marked with "-" are the lines that you need to remove from the file to be patched. | + | Then follows the file code that includes lines marked with the "+" and "-" signs. |
| + | Lines marked with "+" are the lines that you need to add in the file to be patched. | ||
| + | Lines marked with "-" are the lines that you need to remove from the file to be patched. | ||
Under 'Index:' you will find the name of the file to be patched, for example: | Under 'Index:' you will find the name of the file to be patched, for example: | ||
| Line 98: | Line 100: | ||
Total lines: 7 and 7 in each hunk correspondingly. | Total lines: 7 and 7 in each hunk correspondingly. | ||
| + | |||
| + | ==Understanding the process== | ||
| + | |||
| + | In simple words, the patch application procedure for each hunk is as follows: | ||
| + | |||
| + | * Search for the code to be replaced around (above and below) the expected line. | ||
| + | * If found, change it to the new code. | ||
| + | |||
| + | Let us take another look at the second hunk of the example patch provided above to understand the process: | ||
| + | |||
| + | <pre> | ||
| + | @@ -942,8 +940,7 @@ | ||
| + | 'c.rpos' | ||
| + | ); | ||
| + | |||
| + | - $search_condition = | ||
| + | - $join_tbl = array(); | ||
| + | + $search_condition = $join_tbl = array(); | ||
| + | |||
| + | if ($current_area == 'A' || $current_area == 'P') { | ||
| + | </pre> | ||
| + | |||
| + | * Original code to search for (around the line 942): | ||
| + | |||
| + | <pre> | ||
| + | line 942: 'c.rpos' | ||
| + | line 943: ); | ||
| + | line 944: | ||
| + | line 945: $search_condition = | ||
| + | line 946: $join_tbl = array(); | ||
| + | line 947: | ||
| + | line 948: if ($current_area == 'A' || $current_area == 'P') { | ||
| + | line 949: | ||
| + | </pre> | ||
| + | |||
| + | * New code to change to: | ||
| + | |||
| + | <pre> | ||
| + | line 940: 'c.rpos' | ||
| + | line 941: ); | ||
| + | line 942: | ||
| + | line 943: $search_condition = $join_tbl = array(); | ||
| + | line 944: | ||
| + | line 945: if ($current_area == 'A' || $current_area == 'P') { | ||
| + | line 946: | ||
| + | </pre> | ||
| + | |||
| + | The built-in patch/upgrade utility basically works in the same way. | ||
[[Category:X-Cart user manual]] | [[Category:X-Cart user manual]] | ||
| + | |||
[[Category:X-Cart user manual]] | [[Category:X-Cart user manual]] | ||
Revision as of 15:20, 25 May 2011
Contents
What is diff file?
Diff files consist of "hunks". Each "hunk" starts with a line like this:
@@ -942,8 +940,7 @@
where:
- 942 - indicates the number of the first line in the original code (before patch application)
- 8 - indicates the number of lines in the original code (before patch application)
- 940 - indicates the number of the first line in the changed code (after patch application)
- 7 - indicates the number of lines in the changed code (after patch application)
Then follows the file code that includes lines marked with the "+" and "-" signs. Lines marked with "+" are the lines that you need to add in the file to be patched. Lines marked with "-" are the lines that you need to remove from the file to be patched.
Under 'Index:' you will find the name of the file to be patched, for example:
Index: include/func/func.category.php
Example of diff file
Index: include/func/func.category.php
@@ -585,9 +585,7 @@
$cat = abs(intval($cat));
- $to_search =
- $search_condition =
- $join_tbl = array();
+ $to_search = $search_condition = $join_tbl = array();
$from = "$sql_tbl[categories] AS node ";
@@ -942,8 +940,7 @@
'c.rpos'
);
- $search_condition =
- $join_tbl = array();
+ $search_condition = $join_tbl = array();
if ($current_area == 'A' || $current_area == 'P') {
General instructions
1. Open the diff file in a text editor.
2. Edit the file (in our example, include/func/func.category.php):
- Find the lines marked with "-" in the text of the patch and remove them.
- Insert the lines marked with "+" in the text of the patch.
In our example, the original code (before applying the patch) would look like:
line 585:
line 586: $cat = abs(intval($cat));
line 587:
line 588: $to_search =
line 589: $search_condition =
line 590: $join_tbl = array();
line 591:
line 593: $from = "$sql_tbl[categories] AS node ";
line 594:
...
line 942: 'c.rpos'
line 943: );
line 944:
line 945: $search_condition =
line 946: $join_tbl = array();
line 947:
line 948: if ($current_area == 'A' || $current_area == 'P') {
line 949:
Total lines: 9 and 8 in each hunk correspondingly.
The changed code (after applying the patch) would look like:
line 585:
line 586: $cat = abs(intval($cat));
line 587:
line 588: $to_search = $search_condition = $join_tbl = array();
line 589:
line 590: $from = "$sql_tbl[categories] AS node ";
line 591:
...
line 940: 'c.rpos'
line 941: );
line 942:
line 943: $search_condition = $join_tbl = array();
line 944:
line 945: if ($current_area == 'A' || $current_area == 'P') {
line 946:
Total lines: 7 and 7 in each hunk correspondingly.
Understanding the process
In simple words, the patch application procedure for each hunk is as follows:
- Search for the code to be replaced around (above and below) the expected line.
- If found, change it to the new code.
Let us take another look at the second hunk of the example patch provided above to understand the process:
@@ -942,8 +940,7 @@
'c.rpos'
);
- $search_condition =
- $join_tbl = array();
+ $search_condition = $join_tbl = array();
if ($current_area == 'A' || $current_area == 'P') {
- Original code to search for (around the line 942):
line 942: 'c.rpos'
line 943: );
line 944:
line 945: $search_condition =
line 946: $join_tbl = array();
line 947:
line 948: if ($current_area == 'A' || $current_area == 'P') {
line 949:
- New code to change to:
line 940: 'c.rpos'
line 941: );
line 942:
line 943: $search_condition = $join_tbl = array();
line 944:
line 945: if ($current_area == 'A' || $current_area == 'P') {
line 946:
The built-in patch/upgrade utility basically works in the same way.