Patch под Windows

Главные вкладки

Аватар пользователя Funtik44 Funtik44 24 мая 2011 в 15:27

Помогите, всю голову сломал. Хочу пропатчить модули, как правильно написать команду в cmd, учитывая следующее:

Первый патч cck_gmaps_and_ajax_friendly.patch:

diff --git a/sites/all/modules/contrib/cck/includes/content.node_form.inc b/sites/all/modules/contrib/cck/includes/content.node_form.inc
index 8c121be..e077c75 100644
--- a/sites/all/modules/contrib/cck/includes/content.node_form.inc
+++ b/sites/all/modules/contrib/cck/includes/content.node_form.inc
@@ -363,7 +363,7 @@ function content_add_more_js($type_name_url, $field_name) {
   $javascript = drupal_add_js(NULL, NULL);
   $output_js = isset($javascript['setting']) ? '<script type="text/javascript">jQuery.extend(Drupal.settings, '. drupal_to_js(call_user_func_array('array_merge_recursive', $javascript['setting'])) .');</script>' : '';
 
-  $output = theme('status_messages') . drupal_render($field_form) . $output_js;
+  $output = $output_js . theme('status_messages') . drupal_render($field_form);
 
   // Using drupal_json() breaks filefield's file upload, because the jQuery
   // Form plugin handles file uploads in a way that is not compatible with

Второй патч gmap_cck_and_ajax_friendly.patch:

diff --git a/sites/all/modules/contrib/gmap/gmap.module b/sites/all/modules/patched/gmap/gmap.module
index 2f74458..3658959 100644
--- a/sites/all/modules/contrib/gmap/gmap.module
+++ b/sites/all/modules/patched/gmap/gmap.module
@@ -376,6 +376,8 @@ function theme_gmap_marker_popup($label) {
  *
  */
 function gmap_set_location($map, &$form, $fields) {
+
+
   static $ctr = 0;
   $ctr++;
   if (!is_array($map)) {
@@ -957,8 +959,36 @@ function theme_gmap($element) {
   }
   $mapids[$element['#map']] = TRUE;
 
-  // Put map data in a setting.
-  drupal_add_js(array('gmap' => array($element['#map'] => $map)), 'setting');
+  // Create a setting to store map data.
+
+  drupal_add_js(array('gmap' => array()), 'setting');
+
+  $o .= "<script type=\"text/javascript\">
+  jQuery.extend(Drupal.settings.gmap, "
. drupal_to_js(array($element['#map'] => $map)) .");
+  $.getScript('/sites/all/modules/contrib/gmap/js/gmap.js', function() {
+      //alert('Load was performed.');
+  });\n"
;
+  $o .= "
+  $.getScript('/sites/all/modules/contrib/gmap/js/marker.js', function() {
+      //alert('Load was performed.');
+  });\n"
;
+  $o .= "
+  $.getScript('/sites/all/modules/contrib/gmap/js/highlight.js', function() {
+      //alert('Load was performed.');
+  });\n"
;
+  $o .= "
+  $.getScript('/sites/all/modules/contrib/gmap/js/gmap_marker.js', function() {
+      //alert('Load was performed.');
+  });\n"
;
+  $o .= "
+  $.getScript('/sites/all/modules/contrib/gmap/js/poly.js', function() {
+      //alert('Load was performed.');
+  });\n"
;
+  $o .= "
+  $.getScript('/sites/all/modules/contrib/gmap/js/locpick.js', function() {
+      //alert('Load was performed.');
+  });
+  </script>"
;
 
   return $o;
 }
@@ -1263,3 +1293,4 @@ function gmap_views_plugins() {
     ),
   );
 }
+

1. Куда класть эти файлы (патчи модулей), укажите пожалуйста путь? Я их просто положил в C:\mysite\Sites\acquia-drupal
2. Какую команду писать в cmd? Я пишу следующие (по порядку)
а) cd c:\mysite\Sites\acquia-drupal - попадаю в корень своего сайта
б) patch -p0 < cck_gmaps_and_ajax_friendly.patch
в) patch -p0 < gmap_cck_and_ajax_friendly.patch

PS Это корень моего сайта - c:\mysite\Sites\acquia-drupal Для понимания приведу пути:

К модулю cck - C:\mysite\Sites\acquia-drupal\modules\acquia\cck
К модулю gmap - C:\mysite\Sites\acquia-drupal\sites\all\modules\gmap

Обратите внимание, что модули лежат в разных директориях, отсюда не понятно в патчах правильно ли указаны пути и т.д.?

Комментарии

Аватар пользователя Funtik44 Funtik44 24 мая 2011 в 15:42

Я правильно понимаю, что патч нужно класть туда, где он сделан. А где он сделан мы можем узнать посмотрев в код патча в строку, начинающуюся на три минуса "---". Для чего нужна тогда строка "+++" в коде патча?

В обеих строках и "---" и "+++" указаны пути, которых у меня не существует. Мне сделать их? В данном случае я имею ввиду добавить эти папки ("contrib" и "patched")?

В cmd мне сначала нужно пройти в корень сайта? или до самого патча? а потом запустить команду "patch -p0 < gmap_cck_and_ajax_friendly.patch"?

Аватар пользователя Funtik44 Funtik44 24 мая 2011 в 15:48

"xxandeadxx" wrote:
http://drupal.org/patch/apply[/quote]
Не все так просто, прочитайте внимательнее в чем моя загвоздка - все мои модули находятся в разных директориях, сама корневая директория имеет адрес не стандартный. В патчах прописаны пути которых у меня не существует. Куда вообще класть именно эти патчи? Учитывая все вышесказанно как будет выглядеть команда в cmd?

Аватар пользователя Funtik44 Funtik44 27 мая 2011 в 16:42

"xxandeadxx" wrote:
в папку конкретного модуля

При этом в сами патчи я же должен тоже внести изменения? Например 2ой патч, там прописаны пути обращения!?

Аватар пользователя xxandeadxx xxandeadxx 27 мая 2011 в 21:32

патчи трогать не надо, придётся поиграться с переменной -p, для gmap_cck_and_ajax_friendly.patch наверное будет:

git apply -v -p6 gmap_cck_and_ajax_friendly.patch
Аватар пользователя Funtik44 Funtik44 28 мая 2011 в 9:10

"xxandeadxx" wrote:
патчи трогать не надо, придётся поиграться с переменной -p, для gmap_cck_and_ajax_friendly.patch наверное будет:

Я так понимаю, эту команду я должен ввести в CMD, предварительно сами патчи выложить в корень моего сайта (я это делаю на локалхост), а должен ли я сначала в CMD перейти в дерикторию (корневую) где лежат патчи?

Аватар пользователя xxandeadxx xxandeadxx 28 мая 2011 в 15:05

"Funtik44" wrote:
Я так понимаю, эту команду я должен ввести в CMD

в консоли git

"Funtik44" wrote:
предварительно сами патчи выложить в корень моего сайта

"xxandeadxx" wrote:
в папку конкретного модуля

Аватар пользователя Funtik44 Funtik44 31 мая 2011 в 11:44

"oboroten" wrote:
http://drupaldance.com/lessons/patching[/quote]

Делаю следующее (по скринкасту, который ты кинул):

1. Скачал два патча для CCK и Gmap вот отсюда - http://drupal.org/node/266595 (два атачмента в самом низу страницы).

2. Установил TortoiseSVN.

3. Далее делаю как в скринкасте - правой кнопкой кидаю патч в папку и жму "Применить патч"

4. Вылетает окошко (как в скринкасте), мол нужно указать вручную папку, где лежит файл, который нужно пропатчить.

5. Указываю папку, жму Ок и ничего не происходит, открывается просто пустой TortoiseSVN без маленького окошка, как на скринкасте.

В чем моя ошибка, что я делаю не так? Возможно ли это из-за того, что в самих патчах пути указаны какие-то неправильные?

Аватар пользователя oboroten oboroten 31 мая 2011 в 23:22

Из личного опыта - где лежит файл патча совершенно по барабану. Указание папки где лежит файл который следует изменить может быть разным, иногда можно указать просто /путь к каталогу с сайтом/sites/all/modules/, иногда напрямую к модулю, и пару раз было что просто к папке где лежит друпал. так же бывает что патч не срабатывает ни при каких условиях и тогда приходится патчить ручками.