Ну что там обычно новичку советуют? Типа изучай си, нет си сложен, изучай паскаль... посмотри на php. О есть такая штука как питон. Нет, об этом я сегодня говорить не буду. И не буду сравнивать, ide и "блокнот". Сегодня я расскажу о важном и удобном инструменте
В общем ситуация с кодом такая, что если ты ценишь свой труд, то ты захочешь сохранить свой код. Тут спасают бэкапы - это понятно. А что делать с кодом, когда с ним работают несколько человек? А что делать, если надо вести сразу несколько вариантов проекта? А как организовать совместную работу над проектом? Вот на эти вопросы многие ответа и не знают. Ну конечно можно обговорить все последовательности действий. Разработать четкую структура, кто в какой код лезет, но это обычно сложно и не очень продуктивно. Ну сами посудите, я пишу кусок кода, тут оказывается, что в Васином участке какой-то глюк, поправить я его не могу, только отослать Васе, Вася ругается, что правил Федя и он дурак. И не понятно в итоге, что толком делать.
Вот и приходят нам на помощь системы управления версиями. А расскажу о централизованной системе управления версиями. Называется subversion.
Устанавливается она легко и просто.
apt-get install subversion
А теперь в общих чертах что она делает.
Она занимается тем, что следит как изменяются подконтрольные ей файл. Вот собственно всё, что она делает.
Поясню на простом примере.
Пусть Вася создал некий исходник source.py и написал в него:
print "hello world"
print "i'm Vasja"
Дальше он берет, допустим свободный svn-проект с сервера:
svn co http://some_svn_server.com/svn/project1/ dev/project1
И перемещает свой файлик в каталог под управлением subversion(dev/project1), а затем дает команду:
svn add source.py # т.е. добавляет файл source.py к проекту.
svn ci . -m "add source.py to project" # вносит изменение в проект на сервере ci = commit и информирует об этом изменении.
Дальше я у себя говорю:
svn co http://some_svn_server.com/svn/project1 global_dev/project # т.е. получаю проект с сервера.
И ежели я получил проект ещё до внесения последнего изменения (коммита), то говорю:
cd global_dev/project
svn up # Получаю последний вариант проекта
Дальше, я меняю source.py:
import datetime
print "today is % " % datetime.date.today()
print "hello world"
print "Vasja & icegreg"
и говорю
svn ci . -m "fix with date"
И теперь система отправит на сервер только мои изменения. Т.е. не целковый файл, а разность между файлами. А в это время, коварный Василий в этом же файле пишет:
def some_func():
pass
И при попытке внести изменение, ему скажут, что у него старая версия. Что не плохо бы ему сказать svn up.
После того, как он скажет. Система добавит те изменения, которых у него вообще нет, и постарается решить конфликт со строкой print "Vasja & icegreg", т.к. у него не много другой код. И его код будет заменен на новую строчку. А та функция, которую он только что так старательно писал, останется и будет внесена без проблем. Как только он скажет svn ci, то будет создана ещё одна новая ревизия проекта.
В чем плюс этой вещи, если я запутал и ничего не понятно.
1. Решение проблем с кодом и правками.
2. Очень толковое слияние текстовых файлов.
3. Всегда актуальная версия проекта, т.е. обычно ваша версия от версии Васи или моей отличаться особо не будут.
4. Отслеживание ревизий, можно затребовать только определенную ревизию. Ну к примеру, рабочая версия №1234, а на сервере №987. И её надо продублировать не другой сервер:
svn co http://some_svn_server.com/svn/project -r 987
5. И так как изменения обычно вносятся с аутентификацией, то можно определить кто и что именно вносил. Ну что бы "огненным мечем", да по почкам и башке.
6. Проект находится на глобальном сервере, что защищает вас от смерти вашего харда, к примеру (не дай бог конечно, но бывает). Т.е. у вас умерло, ну возможно вы потеряли какой-то кусок кода, но обычно это не так критично, если потерять весь проект.
К subversion'у ещё часто в придачу суют trac. Это система управления проектом, к которой спокойно можно подвязать subversion.
Комментариев нет:
Отправить комментарий