вівторок, 17 лютого 2015 р.

Fossil - максимальна простота і мінімалізм в одному

 При недавньому холіварі на тему з системами керування версіями, а саме git vs svn, іноді чути за mercurial ( hg ). При цьому я на днях почув про fossil, читаючи в інтернеті, всім він сподобався за простоту, саме це є основним великим плюсом в fossil:
- всього один файл завантажити з сайту, або скомпілювати і можна поміщати на флешку, як один писав “репозиторій з кодом на флешці”, розмір файлу трішки більше одного мегабайта

- все зберігається в одній базі

- якщо працювати з своїм репозиторієм і налаштовувати сервер, то для цього підійде навіть простий inetd, SCGI, CGI.

- максимальна простота і мінімалізм, за яку виступає сам автор  Річард Хіпп, який ще пише SQLite

- також зберігається все разом і WIKI, BugTreker.

- є репозиторій для коду, аналог sourceforge, github, Chisel - Fossil SCM Hosting


Одним словом, для роботи з кодом вам не потрібно ставити Apache, nginx сервер для сумісної праці, для цього достатньо стандартного inetd, бо на налаштування сервера і його підтримку йде час затрачений, плюс потрібно ще слідкувати за базою даних, кожен вибирає на свій смак, BerklyDB, MySQL. Для інших систем контролю за версіями є багато додатків для веб перегляду, також WIKI, BugTreker. Всі вони різні, а в fossil все в одному. Саме тому цей вибір випав на нього. Та й система годиться для використання.

Fossil відноситься до розподіленої системи керування версіями, тому можна працювати з власним репозиторієм. Створювати власні гілки, та інше. Коротко в мене все.

Для встановлення fossil багато не потрібно, для ОС Windows http://www.fossil-scm.org/download.html завантажуємо і розпаковуємо, в папку куди зручно, далі, занести шлях в перемінні середовища, або як я зробив .bat файл і запускаю його завжди коли працюю. Зміст його простий:

# скопіювати і вставити в файл з довільною назвою з розширенням bat, якщо
# будуть помилки то видалити коментарі
@set path=E:\dir\fossil;%path% # жирним замініть на свій шлях до папки
@%comspec%

В pkgsrc і FreeBSD ports fossil знаходиться в /devel/fossil, тому для NetBSD чи якщо ви користуєтесь pkgsrc виконуємо:

$ /usr/pkgsrc/devel/fossil && make inctall clean

FreeBSD ports:

$ /usr/ports/devel/fossil && make inctall clean

Про встановлення коротко все, при виявлення помилок звертайтесь до коммітерів портів, чи на сайт проекту.

Почнемо короткий опис роботи:
- Створюємо репозиторій:

$ fossil init E:\repos\relab2500.foss

або

$ fossil new E:\repos\relab2500.foss

В чому різниця поки що не знаю поки що.

Слід зауважити що при створені fossil напише про логін і пароль адміністратора, він дуже балакучий, тому читайте що він напише, як на екрані приклад.


- Клонування репозиторію

$ fossil clone E:\repos\relab2500.foss

Я не зберігаю файл репозиорію і код в одному місці, тому йдемо в папку з проектом і відкриваємо репозиторій:

$ cd E:\src\project\
$ fossil open E:\repos\relab2500.foss // відкрили репозиторій

E:\src\project>fossil open E:\fossil\relab2500.foss
project-name: <unnamed>
repository: E:\fossil\relab2500.foss
local-root: E:/src/project/
config-db: C:/Documents and Settings/suprtuser/Application Data/_fossil
project-code: e1efe19ecc500f85541106427ec9da371c8e366a
checkins: 0

Після відкриття створюється в каталозі файл _FOSSIL_ де будуть всі файли бази даних, там будуть відстежуватись всі зміни, шлях до репозиторію та інше, саме тому після коміту радять закрити проект репозиторію:

$ fossil close E:\fossil\relab2500.foss

Але не забувайте зробити комміт, бо можуть бути попередження.

Створюємо довільні файли які вам потрібно і додаємо їх. Добавимо для прикладу два файли java.
..
extd.java
TResk.java
_FOSSIL_


- додаємо їх:

$ fossil add .

Точку пишемо тоді коли знаходимось в каталогові з кодом
маємо результат:

ADDED extd.java
ADDED Tresk.java

- робимо комміт

$ fossil ci -m “add new files”

- порівнюємо версії файлів
для порівняння нам потрібно взнати версії файлів

$ fossil finfo %file_name%

$ fossil finfo extd.java
History of extd.java
2015-02-17 [87de24cce3] add extd class reson (user: suprtuser, artifact: [d2f080dfc9], branch: trunk)
2015-02-17 [f3dd578c29] add commit clode (user: suprtuser, artifact: [b235c8497f], branch: trunk)

жирним виділив версії, порівнюємо їх зміни:

$ fossil diff -from f3dd578c29 --to 87de24cce3 extd.java
--- extd.java
+++ extd.java
@@ -13,7 +13,15 @@
c=a+b;
System.out.println("C = " +c);
}


+}
+class Resoner
+{
+int a=5;
+for(int b = 7; a < b; a=a+b)
+{
+System.out.println(a);
+return a;
}

- повернення файлу до попередньої версії:

$ fossil revert -r %Версія по індентифікатору% %назва файлу%

Ідентифікатор файлу береться з команди fossil finfo, як в нашому прикладі.

- стан репозиторію:

$ fossil status

- закриття репозиторію:

$ fossil close E:\fossil\relab2500.foss

Звісно це не повний мануал по fossil, це невеликий приклад, більше інформації в документації чи по командам:

$ fossil help

чи

$ fossil help %команда%

Чого тут не розглянули, так це отримання змін з віддаленого репозиторію, слідкування за змінами, переміщення і видалення файлів, що робити з помилками, вони можуть бути коли робити комміт, а файл ще незбережений і відкритий. Також ми не розглянули відправлення змін в віддалений репозиторій.
Це досить простий і зручний інструмент для роботи!

І зберігайте свої дані надійно, робіть бекапи!!!








Немає коментарів:

Дописати коментар