mnasoft / mnas-git

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mnas-Git

Mnas-Git. Проект предназначен для безсетевого способа синхронизации проектов Common Lisp между различными персональными компьютерами.

1 Файлы проекта

./mnas-git.lisp
./mnas-git-test.lisp
./mnas-git-vars.lisp
./package.lisp

2 Экспортируемые функции проекта Mnas-Git

MNAS-GIT:CLONE–BAREДля каждого репозитория, расположенного в каталоге clisp-dir-win текущей ; машины m-i, создает список команд, который выполняет клонирование чистого ; репозитория в каталог (concatenate ‘string git-bare-dir “git-” m-i); ; После создания таким образом каталога с чистыми репозиториями его можно; перенести на другую машину для выполнения слияния.; ; Если опциональный параметр os имеет значение nil,; вывод функции направляется на стандартный вывод при этом функция возврвщает t,; иначе – вывод направляется в командный файл и затем этот выполняется при этом ; функция возврвшает путь к командному файлу и результат выполнения командного файла;; Пример использования:; ;;;;(clone–bare); ;;;;(clone–bare t); Рекоемндации:; Перед выполнением даной функции следует удалить соответствующий ; каталог: (concatenate ‘string git-bare-dir “git-” m-i),; содержащий чистые репозитории;
MNAS-GIT:CLONE–ORIGINГенерирует сценарий, который выполяет клонирование чистых из репозиториев, для которых ; в каталоге с проектами не нашлось соответствующего проекта,; во виз расположения origin ; ;;;;(clone–origin “mnasoft-00”);
MNAS-GIT:COMMANDДля каждого репозитория, расположенного в каталоге clisp-dir-win текущей ; машины m-i, генерирует сценарий, выполняющий команду git-command.; ; Если опциональный параметр os имеет значение nil,; вывод функции направляется на стандартный вывод при этом функция возврвщает t,; иначе – вывод направляется в командный файл и затем этот выполняется при этом ; функция возврвшает путь к командному файлу и результат выполнения командного файла.; ; Пример использования:; ;;;;(command “git remote remove other”); ;;;;(command “git remote remove other” t);
MNAS-GIT:COMMIT-AДля каждого репозитория, расположенного в каталоге clisp-dir-win ; текущей машины m-i, генерирует сценарий, выполняющий команду git commit -a.; ; В качестве комментария используется строка предтвляющая,; значение текущей даты и времени.; ; Примеры использования:; ; @begin[lang=lisp](code); (commit-a); @end(code); ; @begin[lang=lisp](code); (commit-a t); @end(code); ; @begin[path=sin-cos.png](gnuplot); @begin(verb); plot sin(x), cos(x); @end(verb); @end(gnuplot); ;
MNAS-GIT:HELPФормирует подсказку с вариантами использования
MNAS-GIT:INITГенерирует bash-сценарий, инициализирующий git репозитории.; ; Примеры использования:; @begin[lang=lisp](code); (init); ; (init t); @end(code); ;
MNAS-GIT:MANФормирует строку, содержащую подсказку.
MNAS-GIT:REMOTE-READDДля каждого репозитория расположенного в каталоге clisp-dir-win создает список команд, который выполняет:; @begin(list); @item(отсоединение от внешних репозиториев (список m-l), которые для данной машины m-i вожможно имеют неправильное расположение;); @item(присоединение к внешним репозиториям (список m-l), которые для данной машины m-i должны иметь правильное расположение;); @end(list); Если опциональный параметр os имеет значение nil,; вывод функции направляется на стандартный вывод при этом функция возврвщает t,; иначе - вывод направляется в командный файл и затем этот выполняется при этом ; функция возврвшает путь к командному файлу и результат выполнения командного файла.; ; Пример использования:; @begin[lang=lisp](code); (prong; (remote-readd); (remote-readd t)); @end(code); ; Рекомендации:; ; Следует выполнять данную функцию …;
MNAS-GIT:SH-COMMANDПозволяет выполнить команды
MNAS-GIT:DIALOG-REMOTE-READDВыполняет диалог для указания каталога, в котором находится репозиторий git, ; для пересоздания удаленных репозиториев. ; ; Пример использования:; @begin[lang=lisp](code); (dialog-remote-readd); @end(code); ;

3 Генерирование документации

(codex:document :mnas-git)

4 Примеры использования git

4.1 Экспорт изменений в удаленные калалоги

for i in cl.net github.com gitlab.com ; do git push $i master; done

4.2 Set UTF-8 display for Git GUI differences window

# Global setting for all you repositories
git config --global gui.encoding utf-8

# For one repository only
git config gui.encoding utf-8

4.3 How to colorize output of git

git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto

4.4 Install Bash git completion

pacman -S git bash-completion

4.5 Typcal .gitignore file

touch .gitignore 
echo '.directory' >>.gitignore
echo '*~' >>.gitignore
echo '*.FASL' >>.gitignore
echo '*.fasl' >>.gitignore
echo '*.lisp-temp' >>.gitignore

4.6 Typcal .gitattributes file

touch .gitattributes 
echo '# Set the default behavior, in case people don't have core.autocrlf set' >>.gitignore
echo '* text=auto' >>.gitignore
echo '' >>.gitignore
echo '# Denote all files that are truly binary and should not be modified' >>.gitignore
echo '*.png binary' >>.gitignore
echo '*.jpg binary' >>.gitignore
echo '*.bmp binary' >>.gitignore
echo '' >>.gitignore
echo '# Explicitly declare text files you want to always be normalized and converted to native line endings on checkout' >>.gitignore
echo '*.c* text' >>.gitignore
echo '*.h* text' >>.gitignore
echo '' >>.gitignore
echo '# Declare files that will always have CRLF line endings on checkout' >>.gitignore
echo '*.sln text eol=crlf' >>.gitignore
echo '*.txt text eol=crlf' >>.gitignore
echo '*.md  text eol=crlf' >>.gitignore
echo '' >>.gitignore
echo '# Declare files that will always have LF line endings on checkout' >>.gitignore
echo '# Common Lisp.' >>.gitignore
echo '*.lisp text eol=lf' >>.gitignore
echo '*.asd text eol=lf' >>.gitignore
echo '' >>.gitignore
echo '# HTML' >>.gitignore
echo '*.html text eol=lf' >>.gitignore
echo '' >>.gitignore
echo '# AutoCad files' >>.gitignore
echo '# Binary' >>.gitignore
echo '*.cuix  binary' >>.gitignore
echo '*.mnr  binary' >>.gitignore
echo '# CRLF' >>.gitignore
echo '*.lsp text eol=crlf' >>.gitignore
echo '*.mnl  text eol=crlf' >>.gitignore

5 Что сделать

6 BASH pull

cd /home/namatv/quicklisp/local-projects
COMP="KO11-118383";
CDIR=`pwd`; for i in `find . -name ".git"`
do 
  cd $CDIR/$i
  cd ../
  git pull ${COMP} master
done

7 Настройка удаленного πι репозитория

cd;
#PI="141.101.26.243"
PI="pi"
for i in `find /home/namatv/quicklisp/local-projects/ . -name ".git"`
do 
cd $i/..;
echo $PWD; 
git remote remove pi; 
git remote add pi git@$PI:/opt/git/`basename $PWD`.git; 
done

8 Работа с удаленными репозирориями

8.1 pull

cd;
#PI="141.101.26.243"
PI="pi"
for i in `find /home/namatv/quicklisp/local-projects/ . -name ".git"`
do 
cd $i/..;
echo $PWD; 
git pull $PI master;
done

8.2 push

cd;
#PI="141.101.26.243"
PI="pi"
for i in `find /home/namatv/quicklisp/local-projects/ . -name ".git"`
do 
cd $i/..;
echo $PWD; 
git push $PI master;
done

About


Languages

Language:Common Lisp 100.0%