Я поддерживаю копию .bash_history в Мерзавце. Для упрощения этого я установил
# don't put duplicate lines in the history
# don't save commands which start with a space
HISTCONTROL=ignoredups:erasedups:ignorespace
# append to the history file, don't overwrite it
shopt -s histappend
в .bashrc и следующих командах (измененный для общего использования) в сценарии очистки
# Ensure a single space at the end of each line to easier add more parameters
sed -i -e 's/ *$/ /' "~/.bash_history"
sort --unique --output="~/.bash_history" "~/.bash_history"
который я выполняю прежде, чем включить строки git gui
. Так как файл истории изменяется с каждой командой, я также заставил специальную команду обновлять тот определенный репозиторий:
git stash && git pull && git stash pop
-C
опция для rsync может быть тем, что Вы хотите.
Не позволяйте краткому описанию в странице справочника одурачить Вас все же. Казалось бы, что опция только относится к CVS, но в зависимости от Вашей rsync версии это пропустит файлы почти каждой общей существующей системы управления версиями.
# rsync version: 3.0.7
-C, --cvs-exclude auto-ignore files in the same way CVS does
...
The exclude list is initialized to exclude the following items
(these initial items are marked as perishable — see the FILTER
RULES section):
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS
.make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak
*.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe
*.Z *.elc *.ln core .svn/ .git/ .bzr/
then, files listed in a $HOME/.cvsignore are added to the list
and any files listed in the CVSIGNORE environment variable (all
cvsignore names are delimited by whitespace).
Почти — это должно быть
rsync -av --exclude='.svn*' [staging] [clean]
или любая другая форма заключения в кавычки, которое препятствует тому, чтобы оболочка развернула подстановочный знак. (Подстановочный знак только соответствовал бы маловероятному файлу, имя которого начинается --exclude=.svn
, но лучше не рискнуть и также работать правильно, даже если оболочка настроена, чтобы дросселировать при несоответствии подстановочным знакам или развернуть их до пустого списка.)
-r
уже включен в -a
. Дополнительное r
является просто лишним, это не будет делать ничего плохого.
--exclude
файлы причин, соответствующие его аргументу, который не будет ни скопирован, ни рассмотрен для рекурсивного обхода. Обычная трудность с rsync идет другим путем, исключая каталог за исключением определенных частей его. См. фильтр Rsync: копирование одного шаблона только для некоторых подсказок.
В данном случае, исключая каталоги управления версиями быстрый способ получить то, что Вы хотите.
*.a
для iOS Static Libraries. – Max Chuquimia 01.07.2014, 03:57