1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Info Что такое SVN (TortoiseSVN) Patch и с чем его едят?

Тема в разделе 'Кодинг/Собственные решения', создана пользователем Deals, 19 ноя 2010.

  1. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    И так. SVN (Subversion) это система управления репозиторием (хранилищем) исходного кода.
    В подробности не будем уходить - перейдем к делу.
    Я вот очень люблю пользоваться программой TortoiseSVN которая создает файл внесенных изменений в исходники с момента их скачивания.
    Т.е. скачали мы исходники. Что-то в них поменяли. И мы забыли что где и как меняли. Для этого и создается файл патча. Он показывает какие строки были добавлены, убраны и в каких файлах. Нам не важно что как и куда. Я часто выкладываю коды в виде патча. И если научится их читать - будет проще как и автору так и читателю.
    Приведу пример кода (патча):
    Рассмотрим по порядку. Как прочитать данный код (патча) и понять его.
    Самая первая строка говорит о том что мы будем иметь дело с файлом находящемся по адресу: ghost/game_base.cpp
    Далее перейдем сразу к:
    И так. Тут нужно четко вникнуть что означает данная строка. Разделим ее на 2 блока.
    Первый блок - до изменения (-202,7), второй - после (+202,9).
    И эти блоки поделим еще на 2 части разделенными запятыми.
    Первая часть (первая цифра) указывает с какой строки начинается патч (в нашем случае со строки 202, а именно:
    Вторая часть (вторая цифра) указывает сколько строк: для 1 блока - сколько было взято с оригинального кода (файла), для 2 блока - сколько стало строк после изменений.
    И так точнее.
    Первый блок описывает следующее:
    Мы взяли из оригинального кода (файла), начиная со строки под номером 202, 7 строк.
    Т.е.:
    Далее в самом патче идет описание что делали с этими 7 строками. Если перед строкой стоит - (минус) значит строку удаляют из файла. Если перед строкой стоит + (плюс) значит данную строку добавляют в файл. Если перед строкой не стоит ничего - строка не изменяется.
    В данном патче мы удаляем строку:
    У нас осталось 6 строк. На 1 меньше которую удалили.
    И на ее месте ставим:
    Теперь стало на 2 строки больше от оригинального взятого кода (файла). (3 добавили и 1 удалил 3-1=2).
    И так. У нас было взято 7 строк. 6 из них не изменялось вообще. 1 удалили и 3 добавили. В итоге 7-1=6+3=9. И теперь обратите внимание что в конце концов мы получили число 9 которое указано во 2 блоке 2 части. Т.е. в конце мы получили 6 не измененных строк и 2 новые (1 удалили 3 добавили).
    Но вопрос наверное возник. Почему во 2 блоке не изменилась 1 часть. Ответ. Потому что начало патча до и после не изменилось.
    Рассмотрим продолжение данного кода (патча):
    Первый блок понятен. Взяли 7 строк с оригинального файла начиная с 872 строки.
    А вот во 2 блоке строка после патча изменилась. Почему?
    Да потому что перед этим файл измененный патчем:
    Увеличился на 2 строки.
    Прибавьте 2 новые строки к 872 строке оригинального файла. Т.е. это говорит нам о том что код (исходника) второго патча находящийся после первого патча сдвинулся на 2 строки вниз. Т.к. первый патч добавил 2 строки и код (исходника) уехал вниз.
    Например добавим еще 2 патча:
    Во втором патче текущего дополнения (4 в общем по счету) во 2 блоке стоит 958. На 3 больше чем от оригинала. Это потому что в 1 патче (в общем счете) мы добавили 2 строки и код (файла) уехал на эти 2 строки вниз. И в 3 патче (в общем счету) мы добавили 1 строку и код (файла) уехал еще на 1 позицию вниз. В итоге на 3 позиции вниз.
    Так же хочу заметить что пустая строка тоже учитывается.
    Т.е. например патч может выполнять данное действие:
    Оригинальный код:
    Патч:
    Итог:
    Вот собственно и все. Так же иногда бывает когда файла не существует, а патч его создает.
    Тогда код (патча) будет выглядеть например следующим образом:
    Так же хочу заметить. Что строки указанные патчем могут отличаться от ваших. Это связано с разностью версий исходного кода. Хотя зачастую файлы находятся либо повыше, либо пониже от указанных. В патче можно с легкостью найти о каких строках идет речь. Т.к. патч захватывает как минимум 6 строк без изменений по которым можно определить положение кода в файле.

    Спасибо моей голове, за "мини" гайд по содержимому файла *.patch, которая не успела отключится до конца написания гайда.

    Полезные ссылки:
    http://ru.wikipedia.org/wiki/Subversion - WIki
    http://tortoisesvn.net/ - Оффсайт TortoiseSVN
    http://tortoisesvn.net/docs/nightly/Tor ... eface.html - Документация TortoiseSVN
    http://tortoisesvn.net/docs/nightly/Tor ... patch.html - Создание\приминение патчей.
  2. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Re: Что такое SVN Patch и с чем его едят?

    Возможно тема немного не в том разделе. Сами решите куда ее засунуть.
    Как обычно вопросы по данному топику задаем здесь.
    В том числе могу рассказать в общем о SVN.
    P.S.: И наверное большинство подумает что я псих который сидел ночью в 4 часа и писал гайд - и ВЫ БУДЕТЕ АБСОЛЮТНО ПРАВЫ! :lol:
  3. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    171
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Re: Что такое SVN Patch и с чем его едят?

    Я думаю что ты теперь спишь на 4 часа меньше -> -1 час :O
  4. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    Re: Что такое SVN Patch и с чем его едят?

    гжгж
    добавь полезные ссылки=)
  5. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Re: Что такое SVN Patch и с чем его едят?

    На загрузку SVN??
  6. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    Re: Что такое SVN Patch и с чем его едят?

    на проги,серверы,вики....мб ктото посчитает это полезным=)
  7. HaMMeR Ньюфаг

    Сообщения:
    139
    Спасибы:
    0
    Re: Что такое SVN Patch и с чем его едят?

    Обознач кому свн нужен, а кому забить на него.
    Принципе СВН нужен только часто обновляющимся проектам, которые можно модифицировать самостоятельно. Например движок пхп. Да кстати проекты только бесплатные.
    В иных случаях в СВН надбности протсто НЕТ.
  8. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Re: Что такое SVN Patch и с чем его едят?

    Ну SVN да. Но вот патчи которые можно выкладывать разберут не все.
    Вообще в 1 посте я уже добавил ссылки.
    А вообще в 1 посте в 1 строке объясняется что такое SVN.
    Там сразу понятно о чем речь.
  9. festival Старожила

    Сообщения:
    368
    Спасибы:
    0
    Шикарная вещь, только разобраться надо.