Кроме того, кэш базы данных может быть не таким практичным, как кажется. Я скопировал это из http://highscalability.com/bunch-great-strategies-using-memcached-and-mysql-better-together - это специфично для MySQL, хотя.
Учитывая, что MySQL имеет кэш, зачем вообще нужен memcached?
Кэш MySQL связан только с одним экземпляром. Это ограничивает кэш-память максимальным адресом одного сервера. Если ваша система больше, чем память для одного сервера, то использование кэша MySQL не будет работать. И если тот же объект читается из другого экземпляра, он не кэшируется.
Кэш запросов становится недействительным при записи. Вы создаете весь этот кеш, и он исчезает, когда кто-то пишет в него. Ваш кеш может вообще не быть частью кеша в зависимости от моделей использования.
Кэш запросов основан на строках. Memcached может кэшировать любой тип данных, который вы хотите, и он не ограничивается кэшированием строк базы данных. Memcached может кэшировать сложные сложные объекты, которые можно напрямую использовать без объединения.
Не используйте git-log для написания сценариев: используйте git-rev-list
или git-log
с указанным настраиваемым форматом ( - format = * < sth> *
option).
Существует дополнительная проблема с вашим вопросом: может существовать более одного такого корневого коммита TAIL (без родительского коммита) в репозитории (даже если мы не учитываем отключенные ветки , например "html", "man" и "todo" в репозитории git.git). Обычно это результат объединения отдельных проектов в один или объединения поддеревьев отдельно разработанного подпроекта.
Например, в репозитории git есть 6 корневых коммитов: git-gui, gitk (объединено поддеревьев), gitweb (объединено, больше не разрабатывается отдельно), инструменты почты git (объединены очень рано в истории проекта) и p4-fast. -экспорт (возможно, случайно). Это не считая корней ' html и 'man' ветки, «удобные» ветки, содержащие предварительно сгенерированную документацию, и ветку «todo» со списком TODO и скриптами.
Если у вас git 1.7.4.2 или новее, вы можете использовать - -max-parent
параметр:
$ git rev-list --max-parents=0 HEAD
В противном случае вы можете получить список всех без родительских (корневых) коммитов, доступных из текущей ветки, используя:
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
git rev-list HEAD | tail -n 1
is a more stable option.