Журнал LinuxFormat - перейти на главную

LXF133:subversion

Материал из Linuxformat
Перейти к: навигация, поиск
Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей

Содержание

Subversion: Контроль из­ме­не­ний

Боб Мосс по­ка­жет, по­че­му не нуж­но быть ха­ке­ром яд­ра, что­бы при­ме­нять кон­троль вер­сий до­ма и на ра­бо­те.

Вы, на­вер­ное, слы­ша­ли о систе­мах кон­тро­ля вер­сий от гу­ру ко­ди­ро­вания, и мог­ли во­об­ра­зить, что кон­троль версий – сво­его ро­да тай­ная прак­ти­ка, при­ме­няе­мая толь­ко зака­лен­ны­ми ха­ке­ра­ми яд­ра и про­фес­сио­на­ла­ми раз­ра­бот­ки программ­но­го обес­пе­чения. В ре­аль­но­сти все не так, и дан­ный учебник при­зван по­ка­зать вам, как ис­поль­зо­вать мощь этой тех­но­логии с минималь­ны­ми за­тра­та­ми.

Пер­вый во­прос, ко­то­рый вы впра­ве за­дать – что та­кое контроль вер­сий и что в нем хо­ро­ше­го лич­но для вас. Что­бы убить двух зай­цев одним вы­стре­лом, про­сто пред­ставь­те, что вы и ваш кол­ле­га од­но­вре­мен­но со­став­ляе­те де­ло­вое пись­мо. Это мож­но сде­лать дву­мя спо­со­ба­ми. Пер­вый – сна­ча­ла пись­мо ре­дак­ти­руе­те вы, а по­том кол­ле­га; но это зай­мет в два раза боль­ше вре­мени, чем ес­ли бы вы де­ла­ли все в оди­ноч­ку. Вто­рой – вы оба од­но­вре­менно ра­бо­тае­те ка­ж­дый над сво­ей ко­пи­ей пись­ма. Вто­рой ме­тод эффек­тивнее, но тогда непо­нят­но, ка­кие прав­ки долж­ны быть при­няты в фи­наль­ной вер­сии. И от­ку­да уз­нать, что вы ра­бо­тае­те имен­но с по­следней вер­си­ей?

При кон­тро­ле вер­сий ка­ж­дый из вас хранит свою соб­ствен­ную ра­бо­чую ко­пию и про­сто за­пуска­ет об­нов­ление для син­хронизации с одним цен­траль­ным источником (на­зы­вае­мым ре­по­зи­то­ри­ем). Так вы бу­де­те ви­деть все из­менения и вре­мя их по­ме­щения в этот цен­траль­ный источник, и от­кло­нять их или вно­сить в ва­шу соб­ствен­ную локаль­ную вер­сию. Систе­мы кон­тро­ля вер­сий удобнее все­го для со­вме­ст­ной ра­бо­ты, хо­тя при­менимы так­же и для це­лей ре­зерв­но­го ко­пи­ро­вания.

На этом уро­ке мы изу­чим хо­ро­шо из­вест­ную систе­му кон­троля вер­сий – Subversion (иногда со­кра­щен­но на­зы­вае­мую SVN), но мно­гие из рас­смот­рен­ных прин­ци­пов бу­дут вер­ны и в дру­гих систе­мах, та­ких как Git, CVS и Bazaar. Поль­зо­ва­те­ли эзо­те­ри­че­ских ди­ст­ри­бу­ти­вов бу­дут ра­ды уз­нать, что Subversion досту­пен для уста­нов­ки поч­ти во всех па­кет­ных менед­же­рах из ми­ра Linux.

Фик­си­ру­ем из­менения

LXF133 84 1.jpg При нор­маль­ном хо­де про­цес­са, вид ва­ше­го тер­ми­на­ла по­сле на­бо­ра этих SVN-ко­манд бу­дет при­мер­но та­ким.

Начнем с соз­дания сво­его соб­ствен­но­го локаль­но­го ре­по­зи­тория Subversion. Он при­го­дит­ся вам в слу­чае локаль­ной ра­бо­ты над важ­ны­ми фай­ла­ми, что­бы иметь воз­мож­ность от­ка­та к преды­ду­щим вер­си­ям, ес­ли что-то пой­дет не так, а так­же по­служит как уп­ражнение по соз­данию хранили­ща в ва­шей до­машней локаль­ной се­ти (ес­ли вы от­крое­те пра­виль­ные пор­ты в бранд­мауэре). Для соз­дания локаль­но­го ре­по­зи­то­рия SVN от­крой­те тер­минал и на­бе­ри­те вот что:

cd ~
svnadmin create --fs-type fsfs ~/svn

В ва­шем до­маш­нем ка­та­ло­ге соз­да­ст­ся ди­рек­то­рия с име­нем svn. За­пус­тив сле­дую­щую ко­ман­ду, вы об­на­ру­жи­те ва­шу ди­рек­торию Subversion, ко­то­рая по­ка со­вер­шен­но пус­та:

svn ls file:///home/поль­зо­ва­тель/svn

Вы долж­ны от­ме­тить тут несколь­ко ин­те­рес­ных из­менений в ва­ших коман­дах. Во-пер­вых, фай­лы и пап­ки внут­ри ди­рек­тории SVN име­ют пре­фикс file://. Да­лее об­ра­ти­те внимание, что наше обыч­ное со­кра­щение до­машней ди­рек­то­рии (сим­вол тиль­ды ~) за­менено на /home/поль­зо­ва­тель, так как доступ к ре­по­зи­то­рию осу­ще­ств­ля­ет­ся че­рез аб­со­лют­ный путь.

Subversion хо­рош тем, что по­зво­ля­ет вво­дить по­сле svn любые коман­ды тер­ми­на­ла, и ес­ли они несут из­менения фай­ло­вой систе­мы, то бу­дут за­счи­та­ны за commit [фик­са­цию из­менений]. Для соз­дания на­шей пер­вой ди­рек­то­рии SVN про­сто на­бе­ри­те такую коман­ду:

svn mkdir file:///home/поль­зо­ва­тель/svn/folder -m “Это моя пер­вая пап­ка”

Внут­ри ва­ше­го SVN-ре­по­зи­то­рия соз­да­ст­ся но­вая «вир­туаль­ная» ди­рек­то­рия, где мы мо­жем соз­дать ре­дак­ти­руе­мые копии. Мож­но так­же от­ме­тить со­об­щение в кон­це стро­ки – оно запи­шет­ся в жур­нал SVN и бу­дет напоминать нам, за­чем мы сде­ла­ли из­менение. Вы мо­же­те уви­деть его по коман­де

svn log file:///home/поль­зо­ва­тель/svn

Для уда­ле­ния пап­ки из ос­нов­но­го ре­по­зи­то­рия SVN, про­сто заме­ни­те mkdir на rm и на­пи­ши­те в со­об­ще­нии жур­на­ла не­что от­ражаю­щее эту за­ме­ну.

Кон­троль

LXF133 85 1.jpg От­пе­тые тер­ми­на­ло­фо­бы бу­дут ра­ды по­зна­ко­мить­ся с RapidSVN, по­зво­ляю­щим ра­бо­тать че­рез гра­фи­че­скую обо­лоч­ку.

LXF133 85 2.jpg Мож­но иметь боль­ше од­ной ра­бо­чей ко­пии од­но­вре­мен­но, но фик­си­ро­вать сле­ду­ет толь­ко по­след­нюю и с наи­боль­ши­ми из­ме­не­ния­ми.

Те­перь, при на­ли­чии ак­тив­ной SVN-ди­рек­то­рии, вы мо­же­те об­нару­жить, что она не поя­ви­лась в фай­ло­вой систе­ме и не по­зво­ля­ет вам де­лать ка­кие-ли­бо из­менения. Это по­то­му, что ва­ша SVN-дирек­то­рия вы­сту­па­ет как цен­траль­ный источник, ко­то­рый от­сле­жива­ет и хранит из­менения ка­ж­дой ва­шей фик­са­ции (ре­по­зи­то­рий). Для на­ча­ла до­бав­ления в нее фай­лов и внесения из­менений вам нуж­но соз­дать соб­ствен­ную ра­бо­чую ко­пию для об­нов­ления и редак­ти­ро­вания. В ми­ре кон­тро­ля вер­сий это на­зы­ва­ет­ся checkout [выписка] и мо­жет быть вы­зва­но од­ной строч­кой в тер­ми­на­ле:

cd checkoutDir
svn checkout file:///home/поль­зо­ва­тель/svn/folder

Здесь вид­но, что мы пе­ре­шли в ди­рек­то­рию, где хо­тим соз­дать ра­бо­чую ко­пию, и за­пусти­ли в ней checkout. Те­перь мож­но до­бавлять фай­лы и манипу­ли­ро­вать ими как угод­но. Для до­бав­ления в кон­троль вер­сий но­во­го фай­ла, за­пусти­те им­порт SVN, как пока­за­но тут:

svn import importFile.txt file:///home/поль­зо­ва­тель/svn/folder -m “Им­пор­ти­ро­ван importFile.txt”

При ка­ж­дом из­ме­не­нии, сде­лан­ном в этом фай­ле, про­сто запус­кай­те commit для син­хро­ни­за­ции из­ме­не­ний из ва­шей ра­бо­чей ко­пии с ва­шим SVN-ре­по­зи­то­ри­ем.

svn commit -m “Все уже за­фик­си­ро­ва­но!”

И, на­ко­нец, ес­ли вы за­хо­ти­те об­но­вить ва­шу ра­бо­чую ко­пию с лю­бы­ми из­ме­не­ния­ми, сде­лан­ны­ми цен­тра­ли­зо­ван­но (или просто же­лае­те вер­нуть все, что бы­ло до ва­ших из­ме­не­ний), за­пус­тите сле­дую­щую стро­ку:

svn update -r n

где n – но­мер вер­сии. Мо­же­те так­же уб­рать все по­сле сло­ва update, ес­ли про­сто хо­ти­те по­лу­чить все по­следние из­менения за один раз.

Ра­бо­та с тер­ми­на­лам – шту­ка муд­ре­ная, и ес­ли вы ра­бо­таете не с про­грамм­ным про­ек­том, то мо­же­те пред­по­честь ка­кой-нибудь бо­лее дру­же­люб­ный к поль­зо­ва­те­лю ме­тод соз­дания рабо­чих ко­пий, их об­нов­ления и фик­са­ции из­менений.

Поль­зо­ва­те­лям Gnome это сде­лать доста­точ­но про­сто, так как про­грам­ма по имени RapidSVN, доступ­ная в боль­шин­стве основ­ных менед­же­рах па­ке­тов, пре­доста­вит им всю необхо­ди­мую функ­цио­наль­ность для управ­ления соб­ствен­ным SVN-ре­по­зи­то­ри­ем – неваж­но, за­пу­щен ли он на сер­ве­ре, в Ин­тернете или на ва­шей до­машней ма­шине. Поль­зо­ва­те­ли KDE то­же не за­быты: бли­жай­ший эк­ви­ва­лент – KDESVN, так­же доступ­ный в основных ди­ст­ри­бу­ти­вах.

Кое-что по­умнее

Скорая помощь

При на­ли­чии учетной за­пи­си Google мож­но по­лу­чить бес­плат­ный хостинг ре­по­зи­тория Subversion на http://code.google.com/hosting/createProject.

Пре­ж­де чем про­дви­нуть­ся впе­ред и при­менить но­вые на­вы­ки на прак­ти­ке, ис­поль­зуя при­ве­ден­ные ниже неболь­шие про­ек­ты, рассмотрим несколь­ко ве­щей, ко­то­рые вы мо­же­те за­хо­теть сделать, ра­бо­тая с систе­мой кон­тро­ля вер­сий.

Пер­вая – вам мо­жет по­тре­бо­вать­ся сравнить две ре­ви­зии файлов друг с дру­гом, что­бы въявь уви­деть, чем они от­ли­ча­ют­ся: это по­лез­но для вы­яснения, где имен­но в ва­шу ра­бо­ту вкра­лась ошибка. Пе­рей­ди­те в ва­шу ра­бо­чую ди­рек­то­рию и скоман­дуйте:

svn compare -r R1:R2 fileName.txt

за­ме­нив fileName.txt на нуж­ное вам имя.

Что­бы от­ка­тить на­зад из­ме­не­ния для кон­крет­но­го фай­ла, запус­ти­те revert:

svn revert -r n file

где n – но­мер ре­ви­зии. Опус­тив -r n, вы по­лу­чи­те пре­ды­ду­щую реви­зию фай­ла.

На­ко­нец, в ди­рек­то­рии мож­но за­вес­ти бо­лее од­но­го фай­ла, и все с раз­ны­ми но­ме­ра­ми ре­ви­зий. Что­бы най­ти, ка­кой но­мер реви­зии име­ет нуж­ный файл, про­верь­те его status:

svn status file

Го­ло­ва в об­ла­ках

Subversion уме­ет не только делать откат к преды­ду­щим ре­ви­зи­ям фай­лов на ва­шем компь­ю­те­ре. Вы мо­же­те по­местить SVN-ре­по­зи­то­рий на лю­бой се­те­вой диск, и ка­ж­дый в ва­шей локаль­ной се­ти по­лу­чит доступ на выписку. Это мо­гут, на­при­мер, ис­поль­зо­ва­ть в бизнес-сре­де, где обыч­на со­вме­ст­ная ра­бо­та, или да­же си­сад­ми­ны, для от­ме­ны из­менений поль­зо­вате­лей, по­вре­див­шие их учет­ные запи­си.

Од­на­ко осо­бен­но эф­фек­ти­вен Subversion при его применении с он­лайн-ре­по­зи­то­ри­ем. Он спро­ек­ти­ро­ван так, что­бы лю­бой мог взять се­бе ра­бо­чую ко­пию SVN-ре­по­зи­то­рия, за­фикси­ро­вать изменения или син­хронизи­ро­вать эту ко­пию через про­стой ме­ханиз­м об­новления. Бла­го­да­ря это­му SVN пре­крас­но под­хо­дит для управ­ления и раз­вер­ты­вания ПО, но его так­же мож­но при­менить и для чисто на­столь­ных задач, что вы уви­дели в учебнике.

Что ка­са­ет­ся SVN-хостин­га – в ки­бер­про­стран­стве мно­го плат­ных хранилищ, ко­торые мож­но по­про­бо­вать. Но ес­ли вы ре­ши­те во­пло­тить несколь­ко идей из это­го учебника, соз­дай­те про­ект на SourceForge или на Google Code. Оба этих сер­ви­са пре­достав­ля­ют неог­раничен­ное web-про­стран­ство [Google да­ет 1ГБ, – прим. пер.], неог­раничен­ное чис­ло про­ек­тов и доступ к ре­по­зи­то­рию че­рез брау­зер.

Но­вич­кам мы ре­ко­мен­ду­ем второй, посколь­ку там го­раз­до лег­че обу­чение, а также име­ют­ся коман­ды ко­пи­ро­вания и встав­ки для ис­поль­зо­вания в тер­ми­на­ле или в ва­шем SVN-кли­ен­те. Для ис­поль­зо­вания Subversion он­лайн вам сле­ду­ет быть зна­ко­мым с SSH; SourceForge и Google так­же пре­достав­ляют ис­чер­пы­ваю­щую ин­фор­ма­цию на ви­ки, де­мон­ст­ри­рую­щую, как ис­поль­зо­вать SSH с их сер­ви­са­ми.

Subversion: Ми­ни-про­ек­ты

Неза­ви­си­мо от мно­гих при­чин, по ко­то­рым систе­мы управ­ления вер­сия­ми – вещь хо­ро­шая, вы мо­же­те теперь за­ду­мать­ся, где и как при­менить эту тех­но­ло­гию на прак­ти­ке. Мы рас­смот­рим несколь­ко ре­аль­ных при­ме­ров ее ис­поль­зо­вания, но на са­мом де­ле систе­ма кон­тро­ля вер­сий при­менима прак­ти­че­ски в лю­бой си­туа­ции, где есть необ­хо­димость в со­вме­ст­ной ра­бо­те или от­мене из­менений.

Ре­зерв­ное ко­пи­ро­вание

На­стоя­щее ко­пи­ро­вание это не за­ме­ня­ет, но вы ре­аль­но смо­же­те по­местить все ва­ши фай­лы под кон­троль вер­сий и хранить ра­бочую ко­пию как ре­зерв­ную. Что по­зво­лит вам вер­нуть на­зад лю­бые из­менения или уда­ления (да, фик­си­руется да­же уда­ление файлов!) внут­ри всех ва­ших до­ку­мен­тов. Это мо­жно сде­лать, им­пор­ти­ро­вав со­дер­жи­мое до­машней ди­рек­то­рии в ре­по­зи­то­рий SVN:

svn import /home/поль­зо­ва­тель/Documents -m “Им­порт пап­ки с до­ку­мен­та­ми в кон­троль вер­сий”
cd ме­сто/ко­пии
svn checkout file:///home/user/Documents

Здесь мы им­пор­ти­ро­ва­ли пап­ку Documents в кон­троль вер­сий (про­де­лав это ре­кур­сив­но), за­тем пе­ре­мес­ти­лись в ме­сто раз­меще­ния ре­зерв­ной ко­пии и вы­пол­ни­ли для нее checkout. Вы мо­жете хра­нить эту пап­ку в zip- или tar-ар­хи­ве, и для фик­са­ции этой резерв­ной ко­пии дос­та­точ­но вы­пол­нить две ве­щи. Спер­ва зай­ди­те в пап­ку Documents и на­бе­ри­те

svn commit

А для вклю­че­ния всех сде­лан­ных из­ме­не­ний да­лее за­пус­ти­те в ва­шей ра­бо­чей (ре­зерв­ной) ко­пии сле­дую­щее:

svn update

И все! Вы мо­же­те вы­пол­нять две по­следние коман­ды ав­то­мати­че­ски при стар­те сес­сии KDE или Gnome или на­зна­чить им оп­реде­лен­ное вре­мя вы­полнения че­рез crontab.

Web-раз­ра­бот­ка

LXF133 87 1.jpg Используя контроль версий, легко переключаться между различными схемами CSS (и это будут не только различные оттенки синего).

Раз­ра­бот­чи­кам сай­тов систе­ма кон­тро­ля вер­сий то­же очень приго­дит­ся. Тра­ди­ци­он­ный спо­соб раз­ра­бот­ки сай­та за­клю­ча­ет­ся в тести­ро­вании оф­флайн-ко­пии локаль­но, по­сле че­го она за­лива­ет­ся на ре­аль­ную систе­му че­рез FTP. Но мы мо­жем со­хранить сайт внут­ри систе­мы кон­тро­ля вер­сий и за­тем про­сто ис­пользо­вать Subversion для фик­са­ции из­менений в нем. Это по­зво­ля­ет мно­же­ству web-раз­ра­бот­чи­ков дер­жать у се­бя ак­ту­аль­ную ко­пию те­ку­щей вер­сии «жи­во­го» сай­та, имея воз­мож­ность отме­ны из­менений, что де­ла­ет со­вме­ст­ную раз­ра­бот­ку бо­лее эф­фек­тив­ной.

Subversion так­же по­зво­ля­ет раз­ра­бот­чи­кам бы­ст­ро и лег­ко изме­нять ди­зайн сай­та в осо­бых слу­ча­ях, та­ких как раскрут­ка или рас­про­да­жи, или на бо­лее дол­гий пе­ри­од – к при­ме­ру, Но­вый год. Про­сто внеси­те со­от­вет­ствую­щие из­менения в ва­ши фай­лы CSS в од­ной ре­ви­зии, а по окон­чании со­бы­тия верните их на­зад на один шаг. Как по­ка­за­но на ри­сун­ке, мож­но так­же исполь­зо­вать Subversion для тести­ро­вания этих CSS оф­флайн перед фик­са­ци­ей из­менений в он­лайн-сай­те, ко­то­рый ви­дят по­се­тите­ли – в чем и про­яв­ля­ет­ся смысл ис­поль­зо­вания кон­тро­ля вер­сий web-ди­зайнера­ми.

Раз­ра­бот­чи­кам кон­троль вер­сий то­же при­го­дит­ся. Ес­ли вы планируе­те до­ба­вить на ваш сайт но­вую ди­на­ми­че­скую функцио­наль­ность, та­кую как web-фор­мы или JavaScript, или по­вы­сить безо­пас­ность учет­ных запи­сей поль­зо­ва­те­лей, восполь­зуй­тесь Subversion для оф­флайн-тести­ро­вания воз­мож­но­стей. Ка­ж­дое сде­лан­ное ва­ми из­менение, будь то от­лад­ка ва­ше­го кли­ент­ско­го или сер­вер­но­го ко­да, про­вер­ка на экс­плой­ты или про­сто тести­рование на со­от­вет­ствие стан­дар­там в раз­лич­ных брау­зе­рах и платфор­мах, вы мо­же­те при­менить по­сле­до­ва­тель­но.

Но очень важ­но при­за­ду­мать­ся вот о чем. По умол­чанию все за­фик­си­ро­ван­ные ва­ми из­менения пе­ре­да­ют­ся на ре­аль­ный сервер неза­шиф­ро­ван­ны­ми че­рез про­то­кол Subversion, что не пробле­ма при про­стом ре­дак­ти­ро­вании за­глав­ной страницы пользо­ва­те­ля, но неже­ла­тель­но при ра­бо­те с бо­лее чув­стви­тель­ны­ми к безо­пас­но­сти об­ластя­ми, та­ки­ми как систе­ма ау­тен­ти­фи­ка­ции или доступ к ба­зе дан­ных. Так­же из­на­чаль­но нет за­щи­ты от то­го, что лю­бой по­се­ти­тель сай­та сде­ла­ет се­бе свой соб­ствен­ный снимок Subversion и, по­лу­чив доступ к ко­ду всех со­став­ляю­щих сайта, по­ко­па­ет­ся в нем для по­иска уяз­ви­мо­стей.

Про­стое сред­ство из­бе­жать дан­ной си­туа­ции – на­строй­ка прав досту­па web-сер­ве­ра, че­рез ваш Apache, Nginx или IIS, разре­шаю­щих чтение оп­ре­де­лен­ных ка­та­ло­гов толь­ко оп­ре­де­лен­ным поль­зо­ва­те­лям. Тогда лю­бая по­пыт­ка checkout при­ве­дет к сбою, из-за от­сут­ствия досту­па ко все­му ре­по­зи­то­рию, или – в ма­ло­веро­ят­ном слу­чае успе­ха – checkout не су­ме­ет мно­го из­влечь из чувстви­тель­ных мест ва­ше­го сай­та. Что­бы обес­пе­чить фик­са­цию че­рез за­шиф­ро­ван­ное со­единение, ис­поль­зуй­те SSH тем же спосо­бом, как на хостин­ге про­ек­тов Google или SourceForge, при помо­щи па­ры пуб­лич­но­го и при­ват­но­го клю­чей. Это лег­ко де­ла­ет­ся с кросс-плат­фор­мен­ны­ми ин­ст­ру­мен­та­ми, ти­па Putty, а для бо­лее под­роб­ной ин­фор­ма­ции про­смот­ри­те ви­ки Google и SourceForge по дан­ной те­ме.

Се­мей­ный фо­то­аль­бом

LXF133 86 1.jpg За­гру­зи­те фот­ки сво­его по­след­не­го от­пус­ка или про­сто фай­лы, ко­то­ры­ми вы хо­ти­те поде­лить­ся с дру­ги­ми.

Од­но из от­лич­ных при­менений от­сле­жи­вания вер­сий – соз­дание ин­те­рак­тив­но­го фо­то­аль­бо­ма, ку­да все чле­ны ва­шей се­мьи могут до­бав­лять фо­то­гра­фии. Про­сто соз­дай­те SVN-ре­по­зи­то­рий в Ин­тернете и предоставь­те со­от­вет­ствую­щий доступ на checkout и commit для син­хрониза­ции с ним. При этом ка­ж­дый по­лу­чит копию се­мей­ных сним­ков и об­нов­ление при по­яв­лении но­вых. Это так­же пре­крас­но с точ­ки зрения ре­зерв­но­го ко­пи­ро­вания, так как ва­ши дра­го­цен­ные фо­тографии со­хра­ня­ют­ся он­лайн и в нескольких уда­лен­ных местах.

Вы мо­же­те счесть это бо­лее безо­пас­ным, так как вам не придет­ся по­ла­гать­ся на соб­ствен­ные усло­вия ис­поль­зо­вания и ме­ры безо­пас­но­сти ин­тернет-ком­паний для га­ран­тии непри­косно­вен­ности ча­ст­ной жизни. А раз у вас име­ют­ся соб­ствен­ные оф­флайн-ко­пии, вы мо­же­те ис­поль­зо­вать для их ор­ганиза­ции и ре­дак­тиро­вания лю­бые про­грам­мы: так, ес­ли вы близ­ко зна­ко­мы с GIMP, то мо­же­те на до­су­ге улуч­шить ка­че­ство фо­то.

От­сле­ди­те свои фи­нан­сы

В ре­по­зи­то­ри­ях куч­ку­ет­ся мно­же­ст­во па­ке­тов управ­ле­ния фи­нан­са­ми, но ес­ли вы от­сле­живае­те свои де­неж­ные по­то­ки, за­но­ся их в электрон­ную таб­ли­цу, воз­мож­ность жур­на­ли­ро­вания Subversion вам очень при­го­дит­ся.

Ес­ли у вас про­сто спи­сок до­хо­дов и рас­ходов, и вы до­бав­ляе­те к ка­ж­до­му объ­ек­ту из­ме­не­ния и под­счи­ты­вае­те ос­та­ток,что­бы не вый­ти за рам­ки бюд­же­та, при ка­ж­дом та­ком дей­ствии вы мо­же­те фик­си­ро­вать из­ме­не­ния.

Ка­ж­дая фик­са­ция в жур­на­ле бу­дет иметь да­ту и вре­мя тран­зак­ции, и ес­ли вы до­ба­вили не­об­хо­ди­мую ин­фор­ма­цию для ка­ж­дой запи­си в жур­на­ле, то смо­же­те да­же оп­ре­де­лить, сколь­ко вы по­лу­чи­ли или по­тра­ти­ли и как это от­ра­зи­лось на бюд­же­те. При­мер фик­са­ции мо­жет быть та­кой:

svn commit -m “Spent ¬£5.29 Macdonalds, ¬£290.23 under budget”

При ка­ж­дом про­смот­ре жур­на­ла Subversion для дан­но­го фай­ла или ка­та­ло­га вы уви­ди­те длин­ный спи­сок тран­зак­ций, при­год­ный для це­лей об­зо­ра. Вы мо­же­те по­мес­тить эту инфор­ма­цию в тек­сто­вый файл с по­мо­щью

svn log >> financeOutput.txt

и за­тем им­пор­ти­ро­вать эти дан­ные в дру­гие про­грамм­ные па­ке­ты или хра­нить их для се­бя.

Без­гранич­ные воз­мож­но­сти

Ес­ли эти мини-про­ек­ты не су­ме­ли под­стрек­нуть вас по­про­бовать Subversion, найдется и мно­же­ство дру­гих. На­при­мер, мож­но сде­лать спи­сок дел, ко­то­рый чле­ны ва­шей се­мьи смо­гут об­новлять – ти­па школь­ной сек­ции, по­езд­ки за по­куп­ка­ми или турнира по голь­фу, разнесен­но­го по ме­ся­цу (с да­та­ми). Лю­бой смо­жет по­лу­чить ко­пию это­го распи­сания для сво­их соб­ствен­ных нужд, а при ав­то­ма­ти­че­ском об­нов­лении локаль­ной ко­пии – быть посто­ян­но в кур­се дел и со­бы­тий. Вы так­же мо­же­те хранить записи о сво­ем до­машнем ин­вен­та­ре: при­бли­зи­тель­ная да­та по­куп­ки и стои­мость при­го­дят­ся в стра­хо­вом слу­чае, ес­ли с ним при­ключит­ся что-то пло­хое.

Цель дан­но­го уро­ка – дать основ­ное пред­став­ление, для чего из­на­чаль­но соз­да­на систе­ма кон­тро­ля вер­сий. Ее пер­вая и основ­ная за­да­ча – пре­доста­вить поль­зо­ва­те­лям воз­мож­ность уда­лен­но фик­си­ро­вать из­менения ко­да и по­прав­ки к нему. Это так­же по­зво­ля­ет глав­но­му ку­ра­то­ру ре­шать, ка­кие из­менения при­менить, а ка­кие – от­клонить, и да­вать по­яснение, по­че­му это бы­ло сде­ла­но. При­ло­жение мо­жет ра­бо­тать как локаль­ная вер­сия «мастер-ко­пии» из цен­траль­но­го ре­по­зи­то­рия, и доста­точ­но триви­аль­но про­ве­рить, ка­кие вер­сии фай­лов бы­ли об­нов­ле­ны или какие из­менения бы­ли со­вер­ше­ны пе­ред за­пуском об­нов­ления версии, при под­держ­ки ак­ту­аль­но­сти локаль­ной ко­пии.

Раз­драз­ни­ла ли идея ис­поль­зо­ва­ния сис­те­мы кон­тро­ля вер­сий ваш ап­пе­тит к экс­пе­ри­мен­там? Subversion, Git, Bazaar и CVS все мо­гут быть ис­поль­зо­ва­ны в лю­бом про­ек­те. Ес­ли наш урок натолк­нул вас на не­что ин­те­рес­ное, черк­ни­те па­ру строк об этом нам на поч­ту или ос­тавь­те со­об­ще­ние на фо­ру­ме Linux Format. Мы под­роб­но рас­смат­ри­ва­ли Bazaar, SVN и Git в LXF120.

Персональные инструменты
купить
подписаться
Яндекс.Метрика