The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск распределенной системы управления исходными текстами Git 2.4.0

01.05.2015 12:57

Представлен релиз распределенной системы управления исходными текстами Git 2.4.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux, Android, LibreOffice, Systemd, X.Org, Wayland, Mesa, Gstreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse, GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP, Xen, Minix.

По сравнению с прошлым выпуском в новую версию принято 426 изменений, подготовленных при участии 76 разработчиков, из которых 25 впервые приняли своё участие в разработке. В новом выпуске представлены в основном исправления ошибок и мелкие улучшения, значительные изменения отсутствуют. Основные изменения:

  • Поддержка атомарных операций "git push", применение которых активируется опцией "--atomic". Атомарный push полезен при необходимости отправки сразу нескольких веток на внешний сервер. В обычных условиях часть обновлений может пройти нормально, но некоторые обновления могут не пройти, например, когда другой разработчик отправил в тот же репозиторий свою ветку. В этом случае потребуется откорректировать вносимые изменения в соответствие с кодом, который успел отправить другой разработчик.

    Опция "--atomic" даёт возможность отправить несколько веток атомарно как единое целое, так что либо все из перечисленных веток будут приняты, либо все отвергнуты. Например: "git push --atomic origin branch1 branch2". Подобное поведение особенно востребовано в автоматизированных системах непрерывной интеграции - после добавления очередной порции изменений, если проверка прошла успешно, прошедшая тестирование ветка с изменениями переливается в ветку master, создаётся новый тег и примечание к коммиту. Все эти три шага теперь можно выполнить атомарно с гарантией того, что все они будут выполнены: "git push --atomic origin master refs/tags/release-17 refs/notes/test-results".

  • Улучшены средства развёртывания кода командой push (Push-to-deploy), которые часто применяются web-разработчиками для размещения новой версии своего проекта на сервере.
    • Реализован перехватывающий вызов push-to-checkout, который может быть установлен на сервере для задания собственного поведения в ситуации выполнения операции push для ветки после checked-out. По умолчанию если на сервере в рабочем дереве уже были изменения при выполнении подобной push-операции выводится ошибка. Установка своего обработчика позволяет попытаться выполнить слияние нового содержимого ветки с другими редакциями ветки на стороне сервера или принудительно заменить локальные изменения изначальным содержимым ветки.
    • Реализована возможность выполнения Push-to-deploy для только что инициализированного пустого репозитория на сервере, на котором ещё не было коммитов (в обычных условиях операция push в пустой репозиторий не работала корректно).
  • Релизация инвертированного поиска по логам. Для фильтрации вывода команды "git log" доступны такие команды, как "--grep", "--author", "--committer", "--grep-reflog", которые позволяют достаточно точно отсеять соответствующие маске записи в логе коммитов. Новая опция "--invert-grep" позволяет вывести только то, то не попало под заданную маску. Например, для вывода записей в которых отсутствует аннотация "Fixes": "git log --all --merges --invert-grep --grep=Fixes";
  • В команде "git log" пока нет возможности комбинировании опций выборки по маске в произвольные выражения, например, "соответствует А и Б, но не В". Но благодаря опции "--invert-grep" подобные выражения теперь можно симулировать через конвейерную обработку результатов нескольких команд "git log". Например, если нужно найти не приведшие к слияниям коммиты в ветке master, выполненные Иваном Ивановым, для которых не указаны строки "Signed-off-by":
    
       git rev-list --no-merges --author="Junio C Hamano" master |
          git log --stdin --no-walk --invert-grep --grep='^Signed-off-by:'
    

    Чтобы дополнительно исключить из вывода отменённые коммиты и посчитать сколько коммитов осталось:

    
       $ git rev-list --no-merges --author="Junio C Hamano" master |
          git rev-list --stdin --no-walk --invert-grep --grep='^Signed-off-by:' |
          git rev-list --stdin --no-walk --invert-grep --grep='^Revert ' |
          wc -l
    
    
  • В команду "git status" добавлена возможность указания опции "--verbose" дважды. В этой ситуации будут показаны данные не только по коммитам, но и по изменениям, ожидающим коммита;
  • Команда "git log --decorate", при которой помимо обычных данных из лога показываются связанные с ними имена веток, теперь выводит информацию не только о текущей ветке HEAD, но о том, на какую ветку она ссылается (HEAD -> master);
  • Новый параметр конфигурации push.followTags, включающие по умолчанию применение опции "--follow-tags" в команде "git push";
  • В транспорте на базе HTTP при запросах реализована отправка заголовка Accept-Language, что позволяет организовать вывод сообщений сервера на языке, отличном от английского.


  1. Главная ссылка к новости (https://lkml.org/lkml/2015/4/3...)
  2. OpenNews: GitHub представил Git-хранилище для больших файлов
  3. OpenNews: Git исполнилось 10 лет
  4. OpenNews: Анализ TTL помог выявить источник DDoS-атаки на GitHub
  5. OpenNews: Gitorious закрывается и переходит в руки GitLab
  6. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.3.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/42145-git
Ключевые слова: git
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (57) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 15:03, 01/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Когда же эта пса будет под винды?
     
     
  • 2.2, Аноним (-), 15:06, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    http://git-scm.com/download/win ?
     
     
  • 3.3, Аноним (-), 15:09, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Там же 1.9.5
     
     
  • 4.6, Аноним (-), 15:16, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    есть же? про версию речь не шла в предыдущем сообщении)
     
  • 4.8, й (?), 15:25, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    вот тут есть 2.3.7: https://github.com/git-for-windows/git

    2.4 появится там скоро.

    прошлая репа, в которой они вели развитие 1.9, больше обновлляться не будет, они её скоро задепрекейтят в пользу той, на которую даю ссылку.

     
  • 2.11, Аноним (-), 15:44, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Ну какому девелоперу сейчас нужна винда? Поставь её на виртуалку, в конце концов, и расшарь папку с хост-системой. Тогда гиту будет всё доступно.
     
     
  • 3.57, й (?), 12:29, 03/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    кстати, несколько лет назад была тенденция: гит под виндой очень тормозил.

    а вот если запустить виртуалку с линуксом и запускать гит и емакс оттуда -- почему-то не тормозил.

     
  • 2.58, Куяврег (?), 01:47, 04/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    исходники есть. когда соберёшь, тогда и будет.
     

  • 1.4, Аноним (-), 15:10, 01/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –17 +/
    Чем оно лучше subversion?
     
     
  • 2.5, Аноним (-), 15:15, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +15 +/
    Всем.
     
     
  • 3.14, Аноним (-), 15:49, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Аналог "svn co subdir" без костыляний и скачивания всей репы уже есть?
     
     
  • 4.17, Анончик (?), 15:53, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Аналог "svn co subdir" без костыляний и скачивания всей репы уже есть?

    Есть, с версии 1.7 аж. Называется sparse checkout.

     
     
  • 5.24, Аноним (-), 16:45, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Есть, с версии 1.7 аж. Называется sparse checkout.

    Еще раз, для загугливших, но неосиливших - без костыляния или хотя бы без скачивания всей репы.

     
     
  • 6.62, yet another anonymous (?), 11:52, 05/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы уж определитесь: Вам VCS или файлопомойку нужно. В данном случае --- прежде всего VCS, хотя, если приложить голову и руки из git можно сотворить и довольно эффективную файлопомойку. А если хочется файлопомойку "из коробки", то ищите что-то другое.
     
  • 4.18, фыва (?), 16:01, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >svn co subdir

    Не надо так делать, для независимых частей есть submodule.

    >без скачивания всей репы

    Интернет по карточкам?

     
     
  • 5.26, Аноним (-), 16:53, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Не надо так делать,

    т.е. нельзя? А как же тогда
    >> чем лучше?
    > всем

    ?

    > Интернет по карточкам?

    Угу, качать в серьезных проектах от пары сотен мб до нескольких гигов, чтобы посмотреть (или даже собрать  - если достаточно самодостаточный) плагин или модуль на пару сотен кб - обалдеть! Хорошо, если сервер резвый и интернет быстрый - а если нет?


     
     
  • 6.33, фыва (?), 19:19, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    git clone --depth 1 URL
    далее http://stackoverflow.com/questions/180052/checkout-subdirectories-in-git

    Если совсем туго - смотреть через Web-интерфейс.

     
     
  • 7.42, Аноним (-), 01:24, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > git clone --depth 1 URL
    > далее http://stackoverflow.com/questions/180052/checkout-subdirectories-in-git

    Угу, и там же сразу:
    > Note that sparse checkouts still require you to download the whole repository, even though some of the files Git downloads won't end up in your working tree.
    > Если совсем туго - смотреть через Web-интерфейс.

    Только и остается.

     
     
  • 8.60, Аноним (-), 13:06, 04/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    --depth 1 - это же не весь репозиторий Только одна ревизия Хоть и все файлы ... текст свёрнут, показать
     
  • 5.50, anonymous (??), 13:37, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Интернет по карточкам?

    Гиговые файлы в репозитории.

     
     
  • 6.67, cblp (?), 10:36, 18/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Git-annex
     
  • 4.19, Яйцассыром (?), 16:02, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    как в свн удалить коммит, объеденить два в один и несколько поменять местами?
     
     
  • 5.27, Аноним (-), 16:58, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > как в свн удалить коммит, объеденить два в один и несколько поменять
    > местами?

    Еще один не-читатель? Или "Наших бьют! ГитЪ обижають!!"
    Речь как бы шла о "чем это лучше svn? - Фсем!!!"
    Оказывается - не всем.
    Никто не говорил, что svn - верх совершенста, но именно вот эта фича - реально удобно, когда хочется глянуть какую-то часть большого проекта.

     
     
  • 6.39, Аноним (-), 00:11, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > фича - реально удобно, когда хочется глянуть какую-то часть большого проекта.

    Если что, git в дефолтном виде - удобен для именно разработчиков, а не всяких "посмотреть и унести в нору".

     
     
  • 7.43, Аноним (-), 01:37, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Если что, git в дефолтном виде - удобен для именно разработчиков, а

    Что месье диванный оналитег (который очевидно не в курсе, что случаи разные бывают, а "быстрые интырьнеты"  доступны далеко не везде) сказать-то хотел?
    > не всяких "посмотреть и унести в нору".

    А, понятно.  Опять несем бред и тешим ЧСВ?

     
     
  • 8.51, Аноним (-), 14:51, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну, знаешь, я линуксный кернел ради лулзов синкал даже по GPRS Ну разумеется на... большой текст свёрнут, показать
     
  • 5.61, sergik (??), 17:22, 04/05/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    через ж0пу, но вполне можно. Сейчас как раз этим и занимаюсь - перелопачиванием истории Subversion для миграции в TFS. Поскольку утилита миграции обламывается на некоторых возможностях Subversion приходится править историю.

    И ничего, пока всё идёт нормально. Причём народ паралельно комитит в тот же репозиторий. В гите бы так не вышло, между протчим.

    Правится svn дамп с помощью SvnDump package (http://svn.borg.ch/svndumptool)

     
     
  • 6.68, cblp (?), 10:41, 18/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > приходится править историю.
    > И ничего, пока всё идёт нормально. Причём народ паралельно комитит в тот
    > же репозиторий. В гите бы так не вышло, между протчим.

    С гитом не пришлось бы править историю.

     
     
  • 7.69, sergik (??), 11:03, 18/05/2015 [^] [^^] [^^^] [ответить]  
  • +/

    > С гитом не пришлось бы править историю.

    Ты уверен что TFS мигратор поддерживает все возможности GIT-а? Или так, абы ляпнуть?

     
  • 2.7, Аноним (-), 15:19, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Можно без Интернета работать, предварительно скачав себе репу.
     
  • 2.16, Анончик (?), 15:50, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Шёл 2015 год...
     
  • 2.23, Kroz (??), 16:40, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Оно не лучше и не хуже. Оно другое.

    git - децентрализованная VCS. Главная особенность - децентрализация. Тебе не нужно иметь постоянный доступ к репозиторию чтобы коммитить, откатываться и т. п. То есть считай что твоя локальная копия и есть репозиторий. За счет этого получается как бы быстрее. Отсюда и минусы. Сложнее, особенно поначалу как с этим сталкиваешься: checkout vs. clone, commit vs. push и т. п. Учитывая что у тебя как бы локальный репозиторий - занимает больше места локально. А если у тебя есть бинарные объекты - так вообще раздувается. Опять же нет некоторых фишек, которые требуют централизации, например, блокировок (lock).

    svn - централизованная VCS. И ее главный минус - для работы с версиями требуется постоянный коннект с репозиторием, скорость работы зависит от скорости канал и самого репозитория. Но на этом ее недостатки заканчиваются. Она проще, особенно для новичков, локально использует меньше места, есть блокировки т. п.

    Если бы я выбирал CVS, я бы руководствовался 3 критериями:
    1 Могу ли я жить без фишек именно svn типа блокировок?
    2 Есть ли у меня проблемы с организацией постоянного доступа к репозиторию?
    3 Буду ли я выкладывать на github?

    И выбирал бы git если 1=да и (2=да либо 3=да). Иначе выбирал бы svn. ИМХО.

    http://stackoverflow.com/questions/871/why-is-git-better-than-subversion

     
     
  • 3.31, Crazy Alex (ok), 18:44, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Грош цена этой простоте. Потому что всё равно придётся осваивать гит, так как он везде. Лучше уж сделать это сразу и вовсю пользоваться его возможностями. И, соответственно, основной недостаток SVN - просто то, что она не git, а какая-то дополнительная сущность со своими правилами и заморочками, которую надо дополнительно осваивать. Даже если в каких-то workflow у него есть преимущества (а это, кстати, исключительная редкость - например, вместо блокировок проще ветки плодить и иметь кого-то одного с правом мержа в главную) - организационно рано или позно оказывается, что выгоднее перейти на повсеместно используемый git.
     
     
  • 4.45, бедный буратино (ok), 04:29, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Грош цена этой простоте. Потому что всё равно придётся осваивать гит, так как он везде.

    Навязанная свобода (tm) и её агрессивные адепты :)

     
     
  • 5.47, Аноним (-), 13:13, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Тебя опять накормили твоими аргументами в треде про бзд?
     
  • 5.52, Аноним (-), 14:53, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Навязанная свобода (tm) и её агрессивные адепты :)

    Свобода одного кончается там где начинается свобода другого.

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

     
  • 4.65, Aqueelone (?), 14:10, 08/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > вместо блокировок проще ветки плодить и иметь кого-то одного с правом мержа
    > в главную

    Тут через пул-реквесты можно еще интереснее сделать (добавить всю команду в тех, кто апрувит). Так сказать "принятие кода командным консенсусом". Для распределенных команд может быть весьма полезно!  


     
     
  • 5.66, sergik (??), 14:25, 08/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> вместо блокировок проще ветки плодить и иметь кого-то одного с правом мержа
    >> в главную
    > Тут через пул-реквесты можно еще интереснее сделать (добавить всю команду в тех,
    > кто апрувит). Так сказать "принятие кода командным консенсусом". Для распределенных команд
    > может быть весьма полезно!

    Ещё интереснее будет, когда настанет время мержить бинарники.

     
  • 3.54, vn971 (ok), 00:08, 03/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Про используемое место -- вброс или жутко устарелая информация.
    git очень хорошо жмёт и частенько вся история по всем когда-либо сделанным коммитам жрёт меньше чем один полный checkout из svn.

    Вот здесь, например
    http://nullprogram.com/blog/2009/02/12/
    чувак говорит что svn-checkout ревизии 15574 игры freeciv занял 281Mb.
    В гите полная история со _всеми_ 15 тысячью коммитами заняла 225Mb.

    Похожие цифры ещё в проекте "Lazarus" слышал.
    Сам не сравнивал, если честно, ибо у гита есть достоинства которые [для меня] важнее чем объём.

     
  • 2.34, _KUL (ok), 19:33, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    svn для малой группы айтишников, а git для большой, которая активно коммитит.
     
     
  • 3.64, Aqueelone (?), 14:04, 08/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > svn для малой группы айтишников, а git для большой, которая активно коммитит.

    И для малой группы разработчиков гит через ГитХаб с возможностью КонтиниусИнтегрейш через, например Travis-CI, с автодеплоем на АмазонАВС... может быть красивым решением!

     
  • 2.41, Анончег (?), 00:55, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Пока ещё не лучше но уже догоняет...

    > Опция "--atomic" даёт возможность отправить несколько веток атомарно как единое целое, так что либо все из перечисленных веток будут приняты, либо все отвергнуты.

    Профит !

     
  • 2.55, vn971 (ok), 00:13, 03/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Например:
    * возможностью форкнуть проект и вообще мыслить в режиме форка
    * гарантия что ничего не пропадёт даже если по каким-либо причинам основной сервер ёкнется
    * скорость. Не обязателен доступ до инета.
    * возможность создавать легковесные бранчи, ребейзить, мерджить, diff-ать и т.д.
    * github/gitlab, которые стали возможны благодаря другим перечисляемым пунктам.
     
  • 2.63, Aqueelone (?), 14:02, 08/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    ...она лучше гитом.
    Что лучше -- мопед или байк?...
     

  • 1.32, iZEN (ok), 18:49, 01/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    hg (Mercurial) всё равно лучше и легче в обращении. А главное — надёжно.
     
     
  • 2.35, Аноним (-), 19:42, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А был бы на яве - цены бы не было.
     
     
  • 3.37, Аноним (-), 21:17, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет его на яве, потому он очень ценный.
     
  • 2.36, Аноним (-), 20:57, 01/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    То-то никто не пользуется этой питоноподелкой с ограничениями для домохозяек.
     
  • 2.40, Аноним (-), 00:13, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > hg (Mercurial) всё равно лучше и легче в обращении. А главное — надёжно.

    Главное почаще повторять эти виндузоидные мантры.

     
  • 2.44, rdlt (?), 03:06, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    жаль только, что на Python3 его никак не перепишут..
     
     
  • 3.46, Andrey Mitrofanov (?), 12:00, 02/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > жаль только, что на Python3 его никак не перепишут..

    4ый питон сделает ртуть ещё питательнее и полезнее[I]![/I]

     

  • 1.38, Аноним (-), 22:42, 01/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    лучше бы сделали человеческую команду для просмотра log одновременно мастера и сабмодуля,
    а то через пеньколоду составными командам приходится  запускать
     
  • 1.48, Аноним (-), 13:19, 02/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Сборка под Windows будет?
     
     
  • 2.59, Куяврег (?), 01:50, 04/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Сборка под Windows будет?

    конечно. исходники есть, компилятор доступен. собирай.


     

  • 1.49, Аноним (-), 13:21, 02/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А когда будет поддержка GIT флаг "--xml"?
     
  • 1.53, iZEN (ok), 22:23, 02/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что нового в Mercurial 3.4: http://mercurial.selenic.com/wiki/WhatsNew#Mercurial_3.4_.282015-05-01.29
     
     
  • 2.56, Анончег (?), 04:56, 03/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Что нового в Mercurial 3.4: http://mercurial.selenic.com/wiki/WhatsNew#Mercurial_3.4_.282015-05-01.29

    Изя, я как всегда плюсанул тебе прямо в карму !

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру