svn


ramok аватар

Информация о VCS (Version Control Systems) в приглашении zsh

При переходе на git пришла в голову мысль что было бы удобно видеть в приглашении zsh в каком состоянии локальный репозиторий.
Всевозможные rebase, am, merge и подобное сбивает с толку.
Сказано - сделано. Написал собственный велосипед. Потом нашел еще парочку велосипедов в интернете, разобрал на запчасти и прикрутил к своему велосипеду новенькие колеса и смазал педали. Но вскоре, к своему стыду, в мане zsh увидел уже готовый даже не велосипед, а целый танк с экипажем. И собакой в придачу.

Вот он

$ PAGER=less LESS='-p VERSION CONTROL SYSTEMS' man zshall

Творчески переосмыслив пример из мана вот что получилось

autoload -Uz vcs_info
 
# включаем только git svn svk cvs. Возможные VCS можно посмотреть командой vcs_info_printsys
zstyle ':vcs_info:*'              enable            git svn svk cvs
 
# домашняя директория из CVS репозитория. Исключаем ее и некоторые директории из домашнего репозитория
zstyle ':vcs_info:*'              disable-patterns "$HOME(|/.*|/bin)"
 
# Модифицированная версия из man zshcontrib, добавлены флажки staged и unstaged изменений
zstyle ':vcs_info:*'              actionformats    '%F{5}(%f%s%F{5})%F{3}%m%F{5}[ %F{2}%b%F{3}|%F{1}%a%F{5}][ %B%F{yellow}%c%F{red}%u%%b%F{5}]%f '
zstyle ':vcs_info:*'              formats          '%F{5}(%f%s%F{5})%F{3}%m%F{5}[ %F{2}%b%F{5}][ %B%F{yellow}%c%F{red}%u%%b%F{5}]%f '
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat     '%b%F{1}:%F{3}%r'
 
zstyle ':vcs_info:*'              check-for-changes true
zstyle ':vcs_info:*'              get-revision      true
 
setopt prompt_subst
RPROMPT=$'${vcs_info_msg_0_}%b%F{cyan}%T%f'
 
 
# в zsh >= 4.3.11 можно add-zsh-hook precmd vcs_info
precmd ()
{
    vcs_info
}

Ну и как всегда: Live demo! Ж:-)

0
Ваша оценка: Ничего

Откат в Subversion

Для отката на ревизию в прошлом, необходимо выполнить следующие магические заклинания:

$ svn merge -rHEAD:xxxx [путь к svn репозиторию] [путь к локальной копии]

Где xxxx -- нужная прошлая ревизия

Затем можно сделать

$ svn commit

По материалам http://sankas.blogspot.com/2008/02/how-to-rollback-svn-repository-to.html

0
Ваша оценка: Ничего
alexu аватар

Как удалить файлы из Subversion (SVN) репозитория

Файлы из SVN репозитория нельзя удалить подобно файлам из CVS. Для удаления могут быть разные причины, включая случайный commit или разделение одного репозитория на несколько. На будущее разработчики запланировали опцию 'obfuscate', но в настоящее время единственным способом является следующий:

svnadmin dump /путь/к/репозиторию > myrepo.dump
cat myrepo.dump | svndumpfilter exclude /путь/к/ненужным/файлам/репозитория >myrepo.clean
mv /путь/к/репозиторию /путь/к/репозиторию.bkp
svnadmin create --fs-type fsfs /путь/к/репозиторию
svnadmin load myrepo.clean

Пояснения к коду ниже:

0
Ваша оценка: Ничего
ramok аватар

Права на запуск на файлах в репозиториях subversion

Для того то бы хранить в репозитории исполняемые скрипты с правами на запуск, svn предоставляет специальное property svn:executable. Обычно при коммите, если файл имеет права на исполение, svn автоматически устанавливает это property. Но если вам надо уборать права на исполение, то надо удалить svn:executable напрямую.

ramok@~work/stable-1-3/ds/scripts/ svn proplist header.gif
Properties on 'header.gif':
  svn:executable
  svn:mime-type
ramok@~work/stable-1-3/ds/scripts/ svn propdel svn:executable header.gif Logo.jpg
property 'svn:executable' deleted from 'header.gif'.
property 'svn:executable' deleted from 'Logo.jpg'.
ramok@~work/stable-1-3/ds/scripts/ svn commit -m "fix permission on header.gif Logo.jpg"
0
Ваша оценка: Ничего

Git и Subversion могут жить вместе

Предположим, что у вас есть централизованный сервер с svn репозиторием, но вы хотите использовать git локально, делать commit'ы, ветки и другие прелести децентрализованной системы контроля версий. С помощью git-svn это довольно просто.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)
ramok аватар

Просмотр изменений из svn в vim

В svn можно вызвать внешнюю программу просмотра изменений. А в vim имеется для этого специальный режим. Если сложить эти два обстоятельства вместе, можно очень удобно просматривать изменения в vim из svn Ж:-)
1. Создаем ~/bin/vimdiff-svn, даем ему права на исполнение и убеждаемся что ~/bin находится в нашем $PATH

#!/bin/sh
while [ $# -gt 2 ]; do shift; done
vim -d $@

2. Запускаем

$ svn diff --diff-cmd vimdiff-svn

и наслаждаемся результатом Ж:-) Что бы просмотреть следующий файл - выходим из vim (удобно по :qa или :qa!)

Пример использования основанный на этом .

$ svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/kdecore/
$ cd kdecore
$ svn diff -r 181258:183456 kglobalaccel_x11.cpp --diff-cmd vimdiff-svn
5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)
ramok аватар

Просмотр diff из потока в цвете

Часто приходится смотреть diff не из файла, а из потока, например сформированный командой cvs diff или svn diff.
Удобно в таком случае просматривать в цвете в vim, не записывая в файл, а прямо в потоке.

наример:

$ svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/kdecore/
$ cd kdecore
$ svn diff -r 181258:183456 kglobalaccel_x11.cpp | vim -

diff покажется красиво раскрашенным Ж:-)

PS

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)