Умный экспорт из SVN при помощи TortoiseSVN

    Достаточно давно я столкнулся с проблемой, что в хорошей и правильной программе TortoiseSVN (по-русски «тортойс эС-Ви-эН»), нету такой необходимой и желанной вещи, как экспорт только тех файлов, которые были затронуты определенными ревизиями. Особенно начинаешь страдать, когда приходится перезаливать на сервер весь проект, куда входят достаточно увесистые библиотеки и фреймворки. Можно, конечно, не включать библиотеки в Subversion, но это уже тема для другой беседы.
    И вот, совсем недавно, один очень хороший гуру и друг совершенно ненавязчиво рассказал мне, как изящно и красиво решить эту проблему.


    Первое, что нам нужно сделать — это зайти в папку, где у нас лежит рабочая копия и вызвать там контекстное меню. На данном этапе стоит отметить, что у вас уже должна быть установлена программа TortoiseSVN, использование которой, собственно, не требует никаких сверхестественных навыков.

    Так вот, в вызванном контекстном меню нужно выбрать пункт "TortoiseSVN" → "Show log". Перед вами предстанет следующего вида окно:



    В этом окне нужно произвести следующие действия: выбрать ревизию, начиная с которой нужно будет собрать измененные и добавленные файлы, зажать Ctrl, и выбрать ревизию, которой нужно закончить (в 90% случаев, это последняя ревизия). В общем, в итоге, должны быть выделены две ревизии. Теперь, вызываем контекстное меню следующего вида:



    В этом самом меню выбираем пункт "Compare revisions". Получаем список файлов, которые были затронуты ревизиями между выбранными. Выглядит это примерно так:



    Не трудно догадаться, что в этом окошке мы выделяем все файлы, вызываем контекстное меню и выбираем пункт "Export selection to...". Выбираем папку, куда сложить файлы, и жмем «OK».

    Все готово!

    Теперь обновить сайт или сделать ресурс-патч не составит никакого труда.

    Надеюсь, я не единственный, кто не знал, как это делается, и эта информация окажется полезной.

    К сожалению, я использую только эту программу для работы с Subversion, так что не могу описать, как это сделать в другом софте. Но, наверняка, как-то можно. Быть может umputun подскажет, как это работает в eSVN.

    Комментарии активно приветствуются.
    Поделиться публикацией

    Похожие публикации

    Комментарии 40

      0
      перенести бы тему в http://habrahabr.ru/blog/pm/
        0
        Кстати, перенес.
        +2
        Кстати отличная программа эта Черепашка. Если часто работать с branches - то экспорт еще проще.
          –1
          Кстати "Тортэз", а не "Тортойс" )
            0
            Без ссоры, без спора:
              0
              имхо, "тотес" удобнее, чем "тортэз" или "тортойс" =)
                0
                вообще правильно читается - "торту эсвиэн"
                Tortoise - французское слово.
                  +2
                  угу, тогда уж вообще "сюбверсьон тортуаз"
                    0
                    у нас довольно крупная международная девелоперская компания - и мы, и буржуи говорим "торту".
                    Тут спорить просто можно бесконечно - по аналогии с SQL (буржуи говорят "сиквел" - руссские "эскюэль")
                      0
                      Просто в русском есть некрасивое слово, созвучное с «сиквел» (:
                      Но, если по-французски, то правильно, действительно: «тортуаз». Тоже не очень звучно для русского уха. (:
          –1
          TortoiseSVN (по-русски «тортойс эС-Ви-эН»)
          tortoise - больше "Тотас" или "Тотес", с ударением на первый слог. (Это в случае если произносить "эС-Ви-эН") :)
            0
            Без ссоры, без спора:
              +1
              Глупо к таким вещам придираться, ведь тогда надо говорить не "Ворд" (да, тот самый), а "Вёд"
                0
                Ну если еще точнее, то "Уорд"
              +5
              Иногда нужно такое сделать с консоли, что бы не потерять owners/permissions - поможет:
              svn export project build/project -r from:to
                0
                Выдает svn: Revision range is not allowed
                0
                Спасибо огромное, я понимал, что это должно быть, но не мог найти.
                Ушёл искать в эклипсе.
                  0
                  Там тож есть.
                    0
                    И где оно там есть? О каком плагине идет речь? В Polarion нету "Compare revisions", точно также и в Subclipse нету
                      0
                      Team Synchronizing посмотрите.
                        0
                        А причем здесь Team Synchronizing? Эта "перспектива" предназначена для Synchronizing между робоч. репозиторием и главным. Вы прочитайте еще раз повнимательней эту статью и тогда поймете о чем идет речь. Напомню: нужно не просто сравнить changes между файлами роб. репозитория и главного, а _СРАВНИТЬ_ _РЕВИЗИИ_ (ветки).

                        P.S: Если такое и сделают, то в 99% это буде в "перспективе" SVN Respositories но точно не у "Team Synchronizing"
                        P.S.S: Если у Вас все же получилось как то сравнить 2 разных ветки в "Team Synchronizing" - сделайте пожалуйста скриншот :) Спасибо.
                          0
                          Хм... к сожалению хотя в history можно выделить разные ревизии, но пункт compare заблокирован.
                            0
                            Вот вот… и я о том же. А заблокирован он знаете почему? Поточму что он может сравнить только _ФАЙЛЫ_, но не ветки. Попробуйте сделать тоже самое на файлики ;)
                  0
                  Огромаднейшее спасибо, а то очень надоедает ручками просматривать список измененных файлов... а уж когда их не один десяток...
                    0
                    в kdesvn в логе одну ревизию тыкаем левой кнопкой, вторую правой, жмём кнопку Compare revisions
                      0
                      аха... unified diff. А как в виде файлов экспорнуть?
                      0
                      Спасибо!!! Действительно, рабочий способ!!!!
                        0
                        См. также:
                        Интеграция TortoiseSVN с системой учёта ошибок/задач
                        http://nzeemin.livejournal.com/212423.html
                          0
                          Так это описано в стандартной справке к TortoiseSVN.
                          5.25. Integration with Bugtracking Systems / Issue trackers
                          0
                          могу порекомендовать хостинг с поддержкой SVN. Тогда на сервере достаточно выполнить команду svn update, чтобы обновилось то, что нужно
                            0
                            Так, теоретически, SVN-клиент можно поставить везде, где есть вменяемый SSH...
                            А вы про какой хостинг? (:
                              0
                              К сожалению только теоретически...
                              Про этот.
                            0
                            У кого-нибудь есть какие-то идеи почему при выборе "Export selection to..." может выводиться "Отказано в доступе"? Права на чтение и запись репозитория для юзера установлены.
                              0
                              Поставил последнюю версию (1.4.5), все стало хорошо. Была 1.4.4.

                              Еще вопрос. Как сделать все то же самое, но используя только command line, чтоб батник свой написать?
                              0
                              Еще бы удаление файлов из истории сделали в SVN. Я когда начал только пользоваться Tortoise по неопытности бинарные файлы залил, и лежат они мертвым грузом в глубинах истории.
                                0
                                ну если охота покопаться, то делается это следующим образом: берется дамп репозитория и на него натравливается утилита из комплекта svn, точное название не помню, давно это было, что с filter в названии файла по-моему. фильтр соответственно надо настроить на бинарники по расширению (ну или по маске, если не все бинарники надо выкинуть). а потом этот дамп конвертится опять в репо. надеюсь ничего не напутал ))
                                все это естественно требует доступа к серверу svn
                                0
                                Интересно… Черепаха берет своей бесплатностью, но есть более удобные клиенты.
                                Я вот себя очень неуютно чувствую, если перед глазами нет удобного фильтруемого списка измененных/добавленных/не измененных файлов, списка последних транзакций (в т.ч., тех, что я еще не забрал с сервера SVN). Не нравится мне каждый раз тыкать кнопку «Show changes» или как в Черепахе, что сделать

                                Мой выбор — smartSVN. Работаю с ним и из Linux, и из Win — ибо Java. Пожалуй, это редкий случай, когда я понимаю, за что разработчики просят денег…
                                  0
                                  Насколько я помню, «svn -r revisionA:revisionB» позволяяет выгрузисть изменения для заданного диапазона.
                                    0
                                    Не раскрыта тема для случая, когда файл не изменяется, а удаляется из репозитория в новой ревизии. Он ведь тоже будет экспортирован в общем списке? Как быть?
                                      0
                                      Не стоит ли и этот старый топик перенести в блог «Системы управления версиями»?

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое