The OpenNET Project / Index page

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

30.11.2016 14:48  Релиз распределенной системы управления исходными текстами Git 2.11.0

Представлен выпуск распределенной системы управления исходными текстами Git 2.11.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.

По сравнению с прошлым выпуском в новую версию принято 673 изменения, подготовленных при участии 74 разработчиков, из которых 15 впервые приняли своё участие в разработке. Основные изменения:

  • Переработан алгоритм формирования сокращённой формы отображения идентификаторов объектов. Так как полный хэш SHA-1 состоит из 40 шестнадцатеричных цифр и достаточно трудно воспринимается пользователем, в git активно применяется сокращённая система отображения, которая значительно упрощает ввод идентификаторов различных объектов. Чтобы избежать коллизий, приводящих к ссылкам сокращённой формы на более чем один объект в репозитории, до сих пор в Git применялся адаптивный алгоритм формирования идентификатора - вначале формируется 7-символьное представление хэша, которое оставляется если в репозитории нет других объектов с таким идентификатором, и доводится до 8- или 9-символьного варианта в случае обнаружения пересечений.

    Для 7-символьных имён коллизии начинают проявляется в репозиториях, содержащих десятки тысяч объектов. В репозитории с ядром Linux, насчитывающем 5 млн объектов, коллизии наблюдаются для идентификаторов, размером менее 12-символов. Применяемый подход обладает существенным недостатком: отсутствие коллизии в текущий момент не исключает их появление для объектов, которые будут добавлены в будущем. В небольших репозиториях вероятность появления отложенной коллизии невелика, но становится вполне ощутимой в больших и динамично развивающихся репозиториях. Например, опубликованный в системе отслеживания ошибок идентификатор со временем может начать указывать на несколько объектов.

    В Git 2.11.0 существенно расширены средства для проверки пересечений при выполнении операций. Минимальный размер сокращённого идентификатора теперь не фиксирован и динамически выбирается в зависимости от числа объектов в репозитории. Кроме того, если в команде задан слишком короткий идентификатор, для которого в репозитории присутствует несколько объектов, кроме предупреждения о выявлении конфликта, в git 2.11 будет выведен список пересекающихся объектов с дополнительной информацией, достаточной для того чтобы уточнить, какой из более длинных идентификаторов выбрать. Информация в списке выводится с учётом контекста - в первую очередь показываются более вероятные кандидаты объектов, например, в "git log" в первую очередь показываются коммиты. Для выбора первичных типов для других команд, таких как "git show", предложена новая опция "core.disambiguate".

  • Ускорен доступ к delta-цепочкам в базе объектов, что положительно сказалось на производительности многих типовых операций. Delta-цепочки служат для объединения дубликатов при хранении файлов с частично совпадающим содержимым. Для эффективного хранения пересечений один из объектов выбирается как базовый, а похожие на него другие объекты оформляются в виде delta - набора инструкций, определяющих имеющиеся изменения. Так как базовый объект со временем может меняться, в качестве основы для других объектов могут выступать delta-изменения, образуя таким образом delta-цепочки (версия 2 сохраняется как delta от версии 1, а версия 3 как delta от версии 2 и т.п.).

    Чем глубже уровень вложенности, тем больше требуется ресурсов для реконструкции содержимого объекта. В режиме агрессивной упаковки "git gc --aggressive" ранее допускалось создание вложенных цепочек, включающих до 250 объектов, но так как при размере цепочки в более 50 объектов разбор становится неэффективным с точки зрения нагрузки на CPU, по умолчанию максимальный уровень вложенности в Git 2.11 ограничен 50 объектами. Для сокращения нагрузки также полностью переработана реализация кэша недавно восстановленных объектов, что позволило примерно на 10% ускорить работу в больших репозиториях. Для дальнейшего повышения эффективности можно увеличить размер кэша через опцию core.deltaBaseCacheLimit, которая по умолчанию установлена в 96 Мб (например, при увеличении до 1 Гб скорость работы с репозиторием ядра Linux возросла на 32%);

  • Увеличена производительность поиска объектов, в условиях наличия нескольких pack-файлов в репозитории. При большом числе объектов, Git упаковывает группы объектов в сводные pack-файлы, включающие также индексы для быстрой выборки. Новые pack-файлы могут появляться при извлечении или приёме изменений по сети, что приводит к постепенному увеличению числа pack-файлов в репозитории до тех пор, пока не будет инициирована операция переупаковки репозитория. Несмотря на то, что разбор отдельного pack-файла достаточно быстрая операция, при наличии большого числа pack-файлов поиск нужного объекта превращается в последовательный перебор pack-файлов.

    Частично проблема решалась через кэш, определяющий привязку объектов к pack-файлам, а в git 2.10 дополнительно был применён более эффективный метод, перебирающий pack-файлы в порядке прошлого обращения к ним. В Git 2.11 сделан ещё один шаг и новая стратегия перебора задействована при выполнении операции переупаковки. Например, внесённые изменения позволили на 70% ускорить переупаковку репозитория с ядром Linux, в котором накопилось 1000 pack-файлов;

  • Увеличена производительность вычислений идентификаторов патчей (patch ID), активно применяемых при выполнении операции "git rebase". Идентификатор патча представляет собой хэш от изменений, внесённых в рамках одного коммита, что позволяет выявлять дубликаты коммитов и избегать операций переименования и слияния коммитов. В Git 2.11 скорость проверки дубликатов на основе идентификаторов патчей в некоторых ситуациях возросла до 50 раз;
  • Реализован новый протокол для организации запуска фильтров, используемых для преобразования содержимого файла в представление локальной файловой системы. В том числе через фильтры можно подключить собственный обработчик, вызываемый при операциях с Git LFS. Старый протокол, подразумевал запуск отдельного процесса для обработки каждого файла, что при наличии большого числа файлов приводило к большим накладным расходам из-за запуска большого числа процессов, а также ограничивало возможности совместного использования ресурсов между разными экземплярами фильтра.

    Добавленный в Git 2.11 новый протокол позволяет организовать цикличную обработку разных файлов в одном процессе. В некоторых ситуациях в репозиториях с большим числом объектов в Git LFS, новый протокол позволяет увеличить скорость применения фильтра в 80 раз. В будущем планируется расширить новый протокол поддержкой выполнения фильтров в асинхронном режиме. Поддержка старого протокола сохранена для обеспечения обратной совместимости;

  • На основе замечаний о работе экспериментальной опции "--compaction-heuristic", включающей дополнительную эвристику для корректного отображения логики изменений, в которых фигурируют повторяющиеся блоки, в Git 2.11 представлен улучшенный алгоритм компоновки отступов. Новый алгоритм доступен через опцию "--indent-heuristic" (настройка diff.indentHeuristic) и возможно будет активирован по умолчанию в одном из следующих выпусков Git;
  • Добавлена поддержка метки "^-1" для исключения показа изменений, уже имеющихся в ветке до выполнения операции слияния. Например, "git log 1234abcd^-1" покажет все коммиты, которые были приняты при слиянии с веткой 1234abcd, но не отобразит уже имеющиеся в ветке коммиты;
  • В contrib/ добавлен модуль для хранения паролей Git при помощи GNOME libsecret;
  • В команду "git diff" добавлена опция "--submodule=diff", при которой будут показаны изменения субмодулей в форме патча между двумя состояниями субмодуля;
  • В "git status" реализован новый машиночитаемый формат вывода для упрощения автоматизированного разбора данных;
  • С целью увеличения производительности продолжена работа по замене shell-скриптов Git на программы на языке Си.


  1. Главная ссылка к новости (https://github.com/blog/2288-g...)
  2. OpenNews: Представлена децентрализованная СУБД Noms, основанная на идеях Git
  3. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.10.0
  4. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.9.0
  5. OpenNews: Выявлен дубликат короткого идентификатора PGP-ключа Линуса Торвальдса
  6. OpenNews: Опасная уязвимость во всех версиях Git
Лицензия: CC-BY
Тип: Программы
Ключевые слова: git
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 15:36, 30/11/2016 [ответить] [показать ветку] [···]    [к модератору]
  • +9 +/
    >> Например, опубликованный в системе отслеживания ошибок идентификатор со временем может начать указывать на несколько объектов.

    Ну так а кто записывает сокращённый, тот ССЗБ. В мануале явно написано, что это сокращённый и сделан только для, эээ, локального удобства.

     
  • 1.2, Аноним (-), 16:43, 30/11/2016 [ответить] [показать ветку] [···]     [к модератору]
  • +5 +/
    Надеюсь в планах есть замена не только shell-скриптов на Си, но и perl-скриптов ... весь текст скрыт [показать]
     
     
  • 2.7, anonymous (??), 19:39, 30/11/2016 [^] [ответить]     [к модератору]  
  • –5 +/
    А смысл Это нормальные языки программирования, в отличие от ущербного шелла, и ... весь текст скрыт [показать]
     
     
  • 3.9, Аноним (-), 20:06, 30/11/2016 [^] [ответить]     [к модератору]  
  • +/
    Это интерпретируемые языки, так же как и shell, а у интерпретируемых языков скор... весь текст скрыт [показать]
     
     
  • 4.40, Аноним (-), 05:59, 01/12/2016 [^] [ответить]    [к модератору]  
  • +3 +/
    Для начала посмотри, где используются скрипты, раз уж взялся кудахтать:
    https://github.com/git/git/search?l=python
    https://github.com/git/git/search?l=Perl

     
     
  • 5.42, Andrey Mitrofanov (?), 09:19, 01/12/2016 [^] [ответить]     [к модератору]  
  • +/
    А на баше они sha1 , думаешьЮ писали Если твои титоны будут тормозть на вин... весь текст скрыт [показать]
     
  • 3.20, Аноним (-), 22:47, 30/11/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    Питон вообще должен сдохнуть Достал постоянным террариумом - в убунте в репах у... весь текст скрыт [показать]
     
     
  • 4.31, Аниним (?), 01:39, 01/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    анончик заблуждается есть 2.7 и 3 ветки вот и все.
     
     
  • 5.33, Аноним (-), 01:55, 01/12/2016 [^] [ответить]    [к модератору]  
  • –3 +/
    > анончик заблуждается есть 2.7 и 3 ветки вот и все.

    Ничего не знаю, в убунтах бидон 3.5 еще есть. Отдельно от остальных 3.х. Видимо в лучших питонячьих традициях опять полунесовместимо вышло.

     
     
  • 6.34, Stax (ok), 01:56, 01/12/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    Тем не менее - чуток посовместимее, чем perl5 и perl6...
     
     
  • 7.48, Аноним (-), 11:37, 01/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    > Тем не менее - чуток посовместимее, чем perl5 и perl6...

    Мне похрен. Я бы предпочел развидеть и то и другое.

     
  • 6.37, Аноним (-), 02:16, 01/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Мы уже поняли, можете не повторять Очевидно, это проблемы убунт и убунтоводов ... весь текст скрыт [показать]
     
     
  • 7.49, Аноним (-), 11:43, 01/12/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    Хороший перевод стрелок, но нет Врядли они все это организовали от хорошей жизн... весь текст скрыт [показать]
     
     
  • 8.53, Аноним (-), 12:27, 01/12/2016 [^] [ответить]    [к модератору]  
  • +/
    Ага, а у других языков проблем с совместимостью между версиями быть не может по определению!
     
     
  • 9.64, Аноним (-), 18:05, 02/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Таких как у питона Больше ни у кого не видел Если уж про переписывание на си -... весь текст скрыт [показать]
     
  • 8.61, Аноним (-), 20:11, 01/12/2016 [^] [ответить]     [к модератору]  
  • +4 +/
    С какого препугу эта констатация факта совершенно внезапно версия 3 5 принадлеж... весь текст скрыт [показать]
     
     
  • 9.65, Аноним (-), 18:28, 02/12/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    Это фраза мы уже поняли - констатация факта Что она консатирует Что вы спосо... весь текст скрыт [показать]
     
     
  • 10.71, Аноним (-), 02:43, 03/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Передерг такой передерг А уж сколько версий гцц в репах дебиана Ужас, да Если... весь текст скрыт [показать]
     
     
  • 11.72, Аноним (-), 21:01, 03/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Ну а смысл тончить, если вы в дверь ходите боком Не знаю чего ужасного - у м... весь текст скрыт [показать]
     
     
  • 12.73, Аноним (-), 22:32, 03/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Какой юлеж, какие экспрессии А кто же это тут, в 65 отвечал и просил примеры ... весь текст скрыт [показать]
     
  • 4.54, Аноним (-), 12:27, 01/12/2016 [^] [ответить]    [к модератору]  
  • +/
    > Питон вообще должен сдохнуть.

    А мужики-то не знали!

     
     
  • 5.66, Аноним (-), 18:29, 02/12/2016 [^] [ответить]    [к модератору]  
  • –3 +/
    > А мужики-то не знали!

    Да почему же? Мужики в гугле вывели целое поколение go'пников и из той же вебни питон начал вылетать только в путь.

     
  • 3.57, Аноним (-), 13:23, 01/12/2016 [^] [ответить]    [к модератору]  
  • +/
    А причём здесь скорость? Эти языки лишние зависимости тянут.
     
  • 2.10, KonstantinB (ok), 20:33, 30/11/2016 [^] [ответить]    [к модератору]  
  • +8 +/
    Это распределение ничего особо не значит. Заметная часть - это реализация программных интефейсов к гиту на этих языках, и всякие дополнительные утилиты, особо никому не нужные, типа git-svn.
     
  • 2.13, Аноним84701 (ok), 21:19, 30/11/2016 [^] [ответить]     [к модератору]  
  • +3 +/
    Ну, глянем поподробнее https github com git git blob 35f6318d44379452d8d33e88... весь текст скрыт [показать]
     
     
  • 3.15, vitalikp (?), 22:08, 30/11/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    Отсутствие в зависимостях перла и питона для меня был бы огромный плюс Не люблю... весь текст скрыт [показать]
     
     
  • 4.23, Аноним (-), 22:54, 30/11/2016 [^] [ответить]     [к модератору]  
  • –2 +/
    Два чая этому господину А я вот объяснил что террариум из трех полунедосовмести... весь текст скрыт [показать]
     
     
  • 5.28, Аноним84701 (ok), 00:56, 01/12/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    А ссылочка будет, где там в гите три разных версии бидона используется А разр... весь текст скрыт [показать]
     
     
  • 6.35, Аноним (-), 01:58, 01/12/2016 [^] [ответить]     [к модератору]  
  • –5 +/
    Да какая мне разница, в гите это или нет Если кто тащит гадюку - я смотрю на эт... весь текст скрыт [показать]
     
     
  • 7.38, Аноним (-), 02:17, 01/12/2016 [^] [ответить]    [к модератору]  
  • +7 +/
    > Я его назыаю бидоном. Его фанаты гремят много.

    Пока что в этом треде гремишь только ты. Ты случаем не фанат? )

     
     
  • 8.50, Аноним (-), 11:53, 01/12/2016 [^] [ответить]    [к модератору]  
  • –3 +/
    > Пока что в этом треде гремишь только ты. Ты случаем не фанат? )

    Если хочешь, можешь записать меня в фанаты ... git'а, разумеется ;)

     
  • 7.47, Аномномномнимус (?), 10:04, 01/12/2016 [^] [ответить]     [к модератору]  
  • +3 +/
    Да будет лопухам известно, что ваша бубунта без питона просто перестанет работат... весь текст скрыт [показать]
     
     
  • 8.51, Аноним (-), 12:04, 01/12/2016 [^] [ответить]     [к модератору]  
  • –4 +/
    Да будет ламакам с гвидобэйсиком известно гвидобэйсик не требуется для работы с... весь текст скрыт [показать]
     
     
  • 9.55, Аноним (-), 12:38, 01/12/2016 [^] [ответить]     [к модератору]  
  • +4 +/
    Дальше не читал LFS Только LFS, батенька Gentoo не катит, т к Portage написа... весь текст скрыт [показать]
     
     
  • 10.67, Аноним (-), 18:33, 02/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Это вы к Zenkov у с такими развлечениями, я предпочитаю менее хардкорно Дык з... весь текст скрыт [показать]
     
  • 9.58, Аноним (-), 15:56, 01/12/2016 [^] [ответить]     [к модератору]  
  • +4 +/
    И чего тогда неламаки ноют Напишите замену, в убунтах наверняка обрадуются Эт... весь текст скрыт [показать]
     
     
  • 10.68, Аноним (-), 19:01, 02/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Вы наверное тоже будете не в восторге если сосед камаз коровяка перед вашим домо... весь текст скрыт [показать]
     
  • 4.30, Аноним84701 (ok), 01:29, 01/12/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Не плохо Но, как вы сами заметили, задачи переписывания тестов или сборочных ск... весь текст скрыт [показать]
     
  • 4.44, Andrey Mitrofanov (?), 09:49, 01/12/2016 [^] [ответить]     [к модератору]  
  • +/
    А почему ты не можешь прочитать, что тебе написали, объяснишь 124 Добавлю п... весь текст скрыт [показать]
     
     
  • 5.52, Аноним (-), 12:14, 01/12/2016 [^] [ответить]    [к модератору]  
  • +/
    > root@chroot:/# aptitude show git|grep Version

    Пипец, митрорфан превращается в изена!

     
     
  • 6.56, Andrey Mitrofanov (?), 12:49, 01/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Да http www opennet ru openforum vsluhforumID3 109353 html 125 готовлюсь вли... весь текст скрыт [показать]
     
     
  • 7.69, Аноним (-), 19:03, 02/12/2016 [^] [ответить]    [к модератору]  
  • +/
    Не, ну до эталона ламера еще работать и работать. Но флудить копипастами как изен - уже научился!
     
  • 5.60, vitalikp (?), 17:21, 01/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Что прочитать Я все прочитал Зато в коде есть ... весь текст скрыт [показать]
     
  • 1.3, Crazy Alex (ok), 17:26, 30/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    В очередной раз у гита просто образцовый список изменений
     
     
  • 2.5, Аноним (-), 17:45, 30/11/2016 [^] [ответить]    [к модератору]  
  • +8 +/
    Конечно! Как бы вы описывали любимую программу, ради написания которой завели целый проект свободного ядра.
     
  • 2.63, freehck (ok), 12:14, 02/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Поддерживаю на все сто Ребята не просто молодцы, они прямо-таки титаны Я даже ... весь текст скрыт [показать]
     
  • 1.4, anonimus (?), 17:43, 30/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > В команду "git diff" добавлена опция "--submodule=diff", при которой будут показаны изменения субмодулей в форме патча между двумя состояниями субмодуля;

    Джва года этого ждал. При работе с сабмодулями постоянные проблемы - типа что-то изменилось, а если хочешь узнать - сходи в него ручками и посмотри изменения сам.

     
  • 1.11, Спасибо за все (?), 20:56, 30/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +7 +/
    Слава Линусу, Git приносящему! А большего мне и не надо.
     
     
  • 2.19, Аноним (-), 22:45, 30/11/2016 [^] [ответить]     [к модератору]  
  • +/
    Тогда уж принёсшему, потому что как видно из https github com git git graphs c... весь текст скрыт [показать]
     
     
  • 3.29, шельмец (?), 01:06, 01/12/2016 [^] [ответить]    [к модератору]  
  • +/
    Слава Junio, Git приносящему! А большего мне и не надо.
     
     
  • 4.45, Andrey Mitrofanov (?), 09:53, 01/12/2016 [^] [ответить]    [к модератору]  
  • +/
    > Слава Junio, Git приносящему! А большего мне и не надо.

    Угу, спасибо Линусу, отобравшему его у Ларри.  ...и Джунио за мерж параллельного репака (то ли в 2.0, то ли в 2.1...).

     
  • 1.14, Аноним (-), 22:01, 30/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    чё та с сайта качается только 2.10.2! обман же в новости.
     
     
  • 2.18, vitalikp (?), 22:22, 30/11/2016 [^] [ответить]    [к модератору]  
  • +/
    на окна еще не завезли, а вообще вот https://github.com/git/git/releases
     
  • 2.25, Led (ok), 23:57, 30/11/2016 [^] [ответить]    [к модератору]  
  • +3 +/
    Вендузятник должен страдать.
     
     
  • 3.62, Аноним (-), 10:03, 02/12/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    А мусье мазохист-вендузятник или садист-линуксоид?

    По поводу сабжа - уже завезли и для винды. Налетай!

     
  • 1.16, vitalikp (?), 22:18, 30/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Моя первая система контроля версий это была csv,
    потом пришлось перейти на svn. Честно говоря не пользовался ими уже достаточно давно.
    Ну а потом я познакомился с гитом.
    Поначалу было не привычно, но потом я его полюбил.
    Первое что пытался использовать это подмодули(submodule).
    Но потом я бросил эту затею, все же лучше код разделять на репозитории.
    Hg немного читал, но на практике использовать не приходилось.
    И честно говоря единственный код, который мне доводилось читать в нем это код mozilla(firefox и thunderbird).

    Хорошая новость.

     
     
  • 2.22, Аноним (-), 22:51, 30/11/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    Тролльвальдс знает как это делать правильно У него большая распределенная коман... весь текст скрыт [показать]
     
  • 2.26, vitalikp (?), 00:03, 01/12/2016 [^] [ответить]    [к модератору]  
  • +/
    > была csv

    точнее cvs:)

     
  • 1.43, Аноним (-), 09:42, 01/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > Minix

    Таненбаум с его сегодняшними студентами сидят на поделке предыдущего его студента =)

    --
    и кстати не Minix, а Minix3, первая мертвая уже, как и вторая

     
     
  • 2.46, Ergil (ok), 10:01, 01/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Торвальдс никогда не был его студентом. Переписка между ними была, но студентом он никогда не был, не пишите чуши.
     
  • 2.59, Аноним (-), 17:11, 01/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Кто чей студент?
     

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


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