Установка и настройка Subversion (клиент+сервер) под Windows
PHP, programming, Из сети Добавить коментарий
Всем привет! Решил настроить на работе систему контроля версий. Рассмотрел много вариантов установки и настройки. В итоге остановился на ниже описанном, за что автору огромное спасибо:)
Я скачал установочный пакет SlikSVN (32- and 64-bit client MSI; maintained by Bert Huijben, SharpSvn project) и установил его на сервак с апачем. Произвел настройку сервиса как описано ниже. Правда автор рассматривал пакеты VisualSVN и CollabNet, но настройка самого SVN, ничем не отличается. Потом скачал программу TortoiseSVN, а с ней разбираться особо не пришлось. Там все понятно. Но все же ниже так же описано что да как.
Сам оригинал статьи:
По просьбам трудящихся, а так же учитывая, что есть статья по установке SVN (правда +Trac) под Linux, решил написать краткое описание установки и настройки SVN для Windows.
Ничего нового для людей, хорошо знающих и работающих с SVN, здесь не будет. Цель статьи — помочь некоторому проценту новичков, пребывающих на Хабре, таки осилить изучение этой системы контроля версий.
С самого начала сообщаю, что для SVN есть подробное руководство. Называется оно svn-book и доступно на сайте и идет вместе с CollabNet Subversion-server. Так же про установку и настройку svnserv с Apache есть описание в учебнике по TortioseSVN (довольно хорошая подробная помощь на русском).
На самом деле SVN-клиент может отлично работать и без сервера. Репозиторий (хранилище кода) можно создать в любом каталоге на собственном HDD, или в сетевом каталоге. Сервер требуется лишь для удаленного доступа к репозиторию, не больше. Локальный репозиторий годится, если над проектом работает один человек и ему просто нужна система контроля версий своего приложения и бэкапы.
Если работа ведется в команде или требуется удаленный доступ к репозиторию (через Интернет, например), нужно устанавливать SVN-сервер. Он может работать самостоятельно, либо через веб-сервер Apache. В первом случае доступ к репозиториям будет по протоколу svn://, во втором — http(s)://. Доступ через веб-сервер нужен при проблемах с файрволом, когда он пропускает только HTTP-трафик, а так же для работы некоторых утилит-примочек к SVN-серверу.
Установка сервера
Самую свежую версию svn-cервера всегда можно найти на сайте subversion.tigris.org. Чистый svn-сервер без Apache в комплекте, и без визуальных примочек доступен только для версии 1.4.6, в то время как текущая версия 1.5.0. Для версии 1.5.0 есть выбор между CollabNet Subversion-server-1.5.0 (~11 MB) и VisualSVN Server (~5 MB). Первый идет в комплекте с Apache, второй — с Apache и плагином для Windows Management Console. Так же для VisualSVN есть платная возможность интеграции с Visual Studio.
A. Установка и настройка сервера VisualSVN (svn-сервер + Apache + консоль управления) самая простая. Эту версию нельзя установить без Apache.
1) Скачиваем файл VisualSVN-Server-1.5.1.msi или новее. Запускаем установку.
2) В мастере установки указываем, использовать ли для доступа HTTPS, либо просто HTTP. Указываем порт для прослушивания по выбранному протоколу и способ аутентификации. Так же указываем каталог, в котором будут храниться репозитории.
3) После установки открываем Management Console (через Пуск, например) и создаем пользователей и репозитории.
Теперь ваши репозитории доступны через выбранный протокол (HTTP или HTTPS) по указанному при установке хосту:порту (например, https://localhost:8443/svn/). Их можно просматривать как из браузера (через xsl), так и из SVN-клиета.
Работа с сервером VisualSVN безусловно самая простая.
B. Установка CollabNet Subversion Server (svn-сервер + Apache опционально).
1) Скачиваем файл CollabNetSubversion-server-1.5.0-23.win32.exe или версию новее. Запускаем его на установку.
2) Шаг Choose Components. Устанавливаем флажок SVNSERVE в любом случае. Если требуется установить так же Apache для SVN, устанавливаем флажок напротив него.
3) На шаге sunserve Configuration устанавливаем порт для sunserve (по умолчанию 3690, менять его смысла нет, если он не занят) и путь к репозиториям (каталог, где вы будете создавать отдельные репозитории в виде подкаталогов).
4) Затем настраивается Apache: хост/порт, путь к репозиториям (тот же, что и для svnserve) и префикс для URL (http://host:port/prefix). Префикс нужен на случай, если Apache будет использоваться не только для обслуживания SVN.
После установки появятся две новых службы Windows: Subversion Server (наш svnserv.exe) и Apache2.2 (если он был включен при установке). Чтобы все заработало их нужно запустить.
С. Установка svnserve 1.4.6 (чистый svn-сервер).
1) Скачиваем файл svn-1.4.6-setup.exe. Запускаем его на установку. При установке ничего кроме целевого каталога указывать не надо. После установки этот каталог надо добавить в переменную среды PATH (не помню, возможно это делается автоматически).
2) Создаем репозитории командой: svnadmin create c:\repositories\example-repository
3) Создаем сервис. Команда в консоли: sc create svn_svr binpath= «c:\Program Files\Subversion\bin\svnserve.exe –service -r C:\repositories» displayname= «Subversion Svr»
Здесь -r C:\repositories — адрес каталога с репозиториями, т.е. от него потом будут вычисляться пути. Например, если есть 2 репозитория: C:\repositories\proj1 и C:\repositories\proj2, то указав параметром -r C:repositories потом пути к репозиториям будут: svn://localhost:3690/proj1 и svn://localhost:3690/proj2 соответственно. Порт 3690 устанавливается по умолчанию, но его можно поменять (подробности в svn book).
4) Запускается сервис автоматически при старте Windows или из списка служб.
Именно эту работу (если не считать установку Apache) сделал за вас установщик CollabNet Subversion Server. В случае установки svnserve 1.4.6 доступ к репозиторию будет только по протоколу svn://.
D. Создание репозитория. Выделяю этот пункт отдельным разделом. Если в VisualSVN создание репозитория производится кликом мыши, то для svnserve (в том числе в версии от CollabNet) репозиторий создается из консоли. В поставке snv-сервера есть файл snv-install-folder\bin\svnadmin.exe. Если путь к snv-install-folder\bin еще не прописан в PATH, сделайте это.
Чтобы создать репозиторий, откройте консоль (cmd) и перейдите в каталог для хранения репозиториев, который вы указывали при установке (CollabNet) или создании сервиса (svnserve 1.4.6). Создайте новый пустой подкаталог (например, example-repository). В консоли выполните команду: svnadmin create example-repository. В только что созданном каталоге появится структура файлов svn. В них есть много полезных «штук», о которых можно почитать в svn-book и учебнике.
В подкаталоге conf можно настроить основные параметры репозитория. Прежде всего требуется закрыть доступ в репозиторий кому-попало. В файле svnserve.conf раскомментируем строки
# anon-access = read
# auth-access = write
Не забудьте убрать так же пробел после #, т.к. иначе будет ошибка чтения конфига. anon-access определяет доступ анонимным пользователям, auth-access — зарегистрированным. Они могут принимать значения »write», «read» и «none». Обычно anon-access = none и auth-access = write.
Далее надо раскомментировать # password-db = passwd, а в файл passwd в этом же каталоге добавить строку user = password.
Для начала такое определение доступа годится, но в последствии конечно пароли надо шифровать (читаем svn-book).
На этом установка сервера закончена и можно установить клиент.
Установка клиента.
Некоторые профессионалы предпочитают работать с консолью. Наверное это не самый удобный способ, особенно для новичков, поэтому рассматривать его не будем. Другие работают с SVN через плагины к своим IDE. Это самый лучший способ, но поскольку разных IDE много и плагинов к ним тоже, в этой статье работу с ними не описываем.
Самым популярным и признанным клиентом SVN под Windows является TortoiseSVN. После его установки вы не получите отдельной программы, которую можно «классически запустить», клиент встраивается в проводник Windows, а команды для него доступны из контекстного меню файла (в т.ч. и в Total Commander).
Описывать установку клиента нет никакого смысла, там все элементарно просто.
О том, как работать с TortoiseSVN, подробно расписано в руководстве TortoiseSVN Клиент Subversion для Windows.
Дублировать это подробное руководство, конечно, желания нет, но все же super-fast-start work with tsvn опишу.
1) Для просмотра любого репозитория после установки TortoiseSVN вызовите контекствное меню на любом файле в системе, выберите меню TortoiseSVN→Repo-browser. В открывшемся окошке введите адрес репозитория с протоколом (например, https://localhost:8443/svn/test или svn://someserver:3690/proj1/trunc). Откроется окно просмотра репозитория (с помощью кнопки напротив строки адреса можно выбрать, какую ревизию просмотреть; HEAD — это последняя ревизия).
2) Для создания локального репозитория (не используя сервер) запускается пункт меню TortoiseSVN→Create repository here… на нужном каталоге. В Repo-browser такой репозиторий доступен по протоколу file:///.
3) Для скачки себе версии из существующего репозитория запускается пункт меню TortoiseSVN→SVN Checkout на каталоге, в который сольется версия.
4) Если вы еще не использовали SVN и хотите залить на сервер свою текущую версию исходников, запустите пункт меню TortoiseSVN→Import… на каталоге, в котором лежит версия (при этом не забудьте, что разрабатываемую ветку надо лить в trunk).
5) TortoiseSVN→Export… используется для получения чистой версии исходников из репозитория (без служебных файлов контроля версий).
6) Если контекстное меню вызвать на каталоге, который является локальной (рабочей) копией репозитория, контекстное меню значительно расшириться. Например, появятся пункты Update (слить последние изменения с сервера) и Commit (закачать ваши изменения на сервер).
На последок рекомендую почитать интересную серию статей Работа с Tortoise SVN.
Оригинал можно посмотреть здесь.
Еще одна статья
Subversion – это система контроля версий. По сути то же самое, что и CVS, который разработчикам знаком поболее. Отличия Subversion от CVS вы можете найти и на офсайте и на википедии.
Зачем они нужны и что делают можно почитать, например тут или здесь, а еще лучше там.
Для начала скачаем сам сервер, последнюю стабильную версию. С данной статье (заранее предупреждаю!) не будет рассмотрена установка SVN используя в качестве сервера Apache. Если в дальнейшем вы планируете установить svn именно так, то качайте свою версию для Apache 2.0.x и Apache 2.2.x. Для остальных разницы нет.
Итак, скачали exe-установщик (на момент написания статьи последняя стабильная версия – 1.4.6), установили. Там проблем и вопросов возникнуть не должно было. Приступим, собственно к настройке. Создайте где-нибудь папку, которая будет хранить папки проектов. В моем примере это будет “E:\Repository”.
Для начала заставим сервер работать. Сервер находится в папке bin папки установки и называется svnserve.exe. Можно посмотреть список опций добавив “––help” в командную строку. Как видно, сервер можно запускать как сервис windows. Однако вначале сервис нужно зарегистрировать, а сам svnserve этого сделать не умеет. Для этого воспользуемся утилитой Service Control (sc.exe) входящую в состав windows начиная с версии 2000. Для владельцев win98 тоже существует подобная утилитка, только я, увы, не помню ее названия. Да и нефиг на win98 серверы делать )).
Итак, пишем в командной строке:
sc create svnserve
binpath= “c:\svn\bin\svnserve.exe ––service -r e:\repository”
displayname= “Subversion Repository”
depend= Tcpip
svnserve после create – это название сервиса. Именно его нужно будет указывать при использовании команд “net start” и “net stop”. Параметром binPath указывается путь до программы и ее аргументы. Обязательно нужно указать “––service”, и путь к репозиторию. Можно также указать и другие параметры, например, порт с помощью опции “––listen-port portnumber“. Параметром displayname задается имя сервиса отображаемое менеджером сервисов, а параметром depent – зависимости.
В общем это и все, осталось запустить сервис командой “net start svnserve”.
Теперь давайте создадим какой-нибудь проектик. Набиваем в командной строке “svnadmin create e:/repository/testproject”. Если вы сейчас находитесь в самой папке repository, то можно написать просто “svnadmin create testproject”. В результате выполнения этой команды будет создана папка и в ней созданы файлы для пустого проекта. Давайте зайдем в папку E:\Repository\testproject\conf\ и открываем файл svnserve.conf который содержит конфиг для этого проекта. В нем мы видим кучу комментариев за которыми можно разглядеть несколько директив. Рассмотрим их по порядку.
anon-access = none
auth-access = write
Задают уровень доступа для анонимных пользователей и тех, кто авторизовался. Могут принимать три значения – none – ничего нельзя, read – можно только читать и write – можно и писать, и читать. Не переживайте, это еще не все опции контролирующие доступ, к другим мы подойдем чуть ниже. Раскомментируйте их и поставьте свои значения по вкусу. Лично я поставил none и write, соответственно.
Следующая директива – это password-db. Она указывает путь к файлу (абсолютный или относительный (относительно текущего каталога conf)) хранящему список пользователей и паролей. Если у вас для нескольких проектов этот файл имеет одно и то же значение, то можно положить его выше папок проектов и соответственно указать путь. Будем считать, что используем просто файл passwd (т.е. просто раскомментировали эту строку и ничего в ней не меняли). Структура файла passwd проста: после секции [users] идет перечисление имен разделенных через знак равно (и по пробелу вокруг него) со своими паролями. Например:
[users]
vasya = vasinpassword
petya = taT2d@1%
Далее в файле идет директива authz-db, которая указывает на файл определяющий группы пользователей и уточняющий права доступа к конкретным папкам проекта. Указание на файл аналогично директиве password-db. Вряд ли вам это на первых порах понадобиться, но все же я расскажу об этом файле чуть ниже. Кстати, сразу предупрежу, что права доступа задаваемые c помощью anon-access, auth-access и authz-db не перекрывают друг друга. Наоборот, чтобы пользователь получил доступ к какому-то проекту или папке проекта он должен удовлетворить ВСЕМ трем директивам.
И, наконец, последняя директива – realm, которая содержит имя проекта, которое должно быть уникальным. В принципе, можно его и не задавать, ничего страшного не случиться.
authz-db
В качестве вступления пара слов, вольно переведенных с вот этой странички:
Полезная практика: действительно ли Вам нужна авторизация по пути?Большинство системных администраторов, устанавливающих subversion первый раз, стремяться организовать авторизацию по пути хорошенько об этом не подумав. Админ обычно знает какие команды над какими проектами работают, так что кажется полне логичным дать определенным командам доступ к соотвествующим каталогам, а к другим закрыть. Это кажется естественным и является проявлением желания администратора иметь полный контроль над репозиторием.
Однако, с этой возможностью связаны часто незаметные поначалу затраты. Хотя определенным пользователям и не следует сохранять изменения в определенных частях репозитория, нет никакой нужды технически запрещать это. Команды могут общаться между собой; кто-то может захотеть помочь другому давая поработать над частью, над которой он в принципе не работает. Ограничивая такие вещи со стороны сервера, Вы ставите барьеры непредусмотренному сотрудничеству. Так же вы создаете кучу правил, которые надо поддерживать по ходу развития проекта, добавляя новых пользователей и т.п. Вы создаете себе лишнюю работу.
Помните, что это система контроля версий! Даже если кто-нибудь случайно отправит изменения, которые ему не следовало отправлять, Вы без труда отмените изменения. А если сохранит изменения по злому умыслу, то это в любом случае проблема социальная и решаться должна вне Subversion.
Итак, перед тем как вы начнете ограничивать права доступа пользователей, спросите себя, а есть ли в этом действительно настоящая необходимость, или это просто что-то, что неплохо звучит? Помните, что риски малы, а вот использовать технологии для решения социальных проблем – плохо.
Если вы еще не раздумали ограничивать права, то приступим. Синтаксис файла подобен синтаксису всех прочих конфигов svn’a. Строки начинающиеся с # являются комментариями и пропускаются. Имена секций определяют проект и каталог в нем. Опциями являются имена пользователей (описанных в password-db), а значениями – r (только чтение), rw (чтениеи и запись) и пустой строкой (ничего не разрешено). Если пользователь не упомянут в секции, считается, что доступ запрещен. Пример конфига:
[testproject:/some/directory]
vasya = rw
petya = r
Пользователь вася имеет полный доступ к каталогу /some/directory, а петя – только на чтение. Чуть ниже можно дописать так:
[testproject:/some/directory/inside]
petya = rw
И петя получит доступ на запись в подкаталог inside каталога directory. Это право он получает и для каталога inside и для всех его подкаталогов, но ни для какого иного каталога directory. Как видите, права имеют свойство наследоваться. Можно сделать и так:
[testproject:/some/directory/inside/nefig]
vasya =
Тогда вася не сможет даже прочитать каталог nefig, а петя не только сможет прочитать, но и записать даже будет способен ). Таким образом настройки прав для подкаталогов могут переопределять права заданные для родительских каталогов. По-умолчанию, к репозиторию доступ не имеет вообще никто. Чтобы разрешить пользователям хотя бы читать его содержимое, надо написать так:
[/]
* = r
К слову говоря, порядок описания секций значения не имеет. Когда пользователь хочет получить доступ к какому-то каталогу, проверка прав начинается с указанного каталога и далее, переходя к родителям, пока не будет найдено описание прав для данного пользователя.
Еще в файле можно определять группы. Они описываются в секции [groups]. В описании группы имя опции – имя группы, а значение – список пользователей в нее входящих через запятую. Группы могут включать в себя другие группы. Имя группы отличается от имени пользователя по знаку @ перед ее именем. Например:
[groups]
web-designers = petrov, ivanov
programmers = sidorov, vasilchenko
everyone = @web-designers, @programmers
Права группам выдаются так же, как и пользователям:
[testproject:/somewhere/something]
@programmers = rw
@web-designers = r[testproject:/somewhere/elsewhere]
@web-designers = rw
sidorov = rw
Вот и все, ребята )
Tortoise SVN
Итак вы настроили сервер, теперь пора бы его проверить. У систем разработок (ide), которыми вы пользуетесь (ведь не блокнот же, в самом деле), скорее всего есть клиент для работы с системами контроля версий. Но во-первых, это не всегда SVN (часто только CVS), а во-вторых, для работы всегда полезно иметь что-то маленькое и удобное. Многим (а теперь и мне) нравится маленький клиент TortoiseSVN, который встраивается в проводник и может быть вызван из его контекстного меню. Давайте скачаем его и, если есть желание, руссифицируем (но не советую). На момент написания статьи последняя стабильная версия – 1.4.8. Установка происходит легко и быстро, после чего вам предложат перезагрузиться. Можно и не делать этого, это лишь обеспечит “глубокую” интеграцию – будут отображаться не просто папочки, а папочки с иконками.

Итак, создадим какую-нибудь папку, например, testproject. Зайдем в нее и в контекстном меню выберем SVN Checkout. Можно выбрать и Tortoise SVN -> Import. В появившемся окне вводим адрес “svn://localhost/testproject”. Если вы делаете это с другого компьютера, то нужно указать вместо localhost адрес компа с сервером. Если при установке сервиса меняли порт с дефолтного 3690, то нужно указать и порт. В итоге, я надеюсь, у вас все получилось и в папке появилась локальная копия проекта. В контекстном меню вы найдете и другие команды для апдейта, коммита и т.д.
Пожалуй и все.
Оригинал этой еще одной похожей статьи.
98 Responses to “Установка и настройка Subversion (клиент+сервер) под Windows”
Оставить комментарий к записи
Вы должны Войти, чтобы оставить комментарий.
О, класс! Отличная статья! Долго ломал голову, не мог ничего установить, а тут с первого раза!!
А скажите, есть где-то бесплатная Visual Studio??
А то мне надо для coursework writing services, а платить за Visual Studio не хотелось. А вообще дорого?
abjurers…
Truly good thank you, I do think your current readers will probably want more blog posts along these lines continue the excellent content….
voucher offers…
Its hard to find informative and precise information but here I found…
Natural Swimming Pools…
[...]following you’ll find the website link to a lot of webpages that we feel you need to stop at[...]…
psychic interactive…
It was a dreary day here today, so I just took to messing around online and found…
Anti Wrinkle…
I am forever saying that its difficult to procure quality help, but here is…
Dreary Day…
It was a dreary day here today, so I just took to piddeling around on the internet and found…
tv switchover dates…
I was reading the news and I saw this really interesting topic…
Wika linked to this {site|website|place}…
I was reading the news and I saw this really interesting topic…
Wikia…
Wika linked to this site…
It is quite hard to find good help…
I am really regularly proclaiming that its hard to procure quality honest help, but here is…
Looking around…
I like to surf in various places on the web, regularly I will just go to Digg and read and check stuff out…
Tumblr…
Tumblr linked to this website…
News info…
I was reading the news and I saw this really cool information…
Informative and precise…
Its difficult to find informative and precise info but here I found…
Tumblr…
Tumblr linked to this site…
News…
I was reading the Yahoo news and I saw this really interesting info…
News…
I was reading the Yahoo news and I saw this really cool info…
Useful and precise…
Its difficult to find really informative and accurate information but here I noted…
Dreary Day…
It was a dreary day here today, so I just took to piddeling around on the internet and found…
Looking around…
I love to browse in various places on the online world, often I will go to Stumble Upon and read and check stuff out…
Hard Day…
It was a hard day here today, so I just took to messing around online and found…
Its hard to find good help…
I am constantnly saying that its difficult to get quality help, but here is…
Wikia…
Wika linked to this place…
Much Thanks!…
Thanks for taking the time to provide us all with the info!…
Dreary Day…
It was a dreary day here yesterday, so I just took to messing around on the internet and realized…
Yahoo results…
While searching Yahoo I found this page in the results and I didn’t think it fit…
You should check this out…
[...] Wonderful story, reckoned we could combine a few unrelated data, nevertheless really worth taking a look, whoa did one learn about Mid East has got more problerms as well [...]……
Recommeneded websites…
[...]Here are some of the sites we recommend for our visitors[...]……
Sources…
[...]check below, are some totally unrelated websites to ours, however, they are most trustworthy sources that we use[...]……
Websites worth visiting…
[...]here are some links to sites that we link to because we think they are worth visiting[...]……
Informative and precise…
Its difficult to find informative and accurate info but here I noted…
Cool sites…
[...]we came across a cool site that you might enjoy. Take a look if you want[...]……
Superb website…
[...]always a big fan of linking to bloggers that I love but don’t get a lot of link love from[...]……
Cool sites…
[...]we came across a cool site that you might enjoy. Take a look if you want[...]……
Superb website…
[...]always a big fan of linking to bloggers that I love but don’t get a lot of link love from[...]……
Great website…
[...]we like to honor many other internet sites on the web, even if they aren’t linked to us, by linking to them. Under are some webpages worth checking out[...]……
Useful and precise…
Its difficult to find really informative and accurate information but here I noted…
Hard Day…
It was a hard day here today, so I just took to messing around online and realized…
Hard Day…
It was a hard day here today, so I just took to messing around online and found…
Just Looking…
When I was surfing today I noticed a great post about…
Informative and precise…
Its difficult to find informative and accurate information but here I noted…
News…
I was reading the Yahoo news and I saw this really cool topic…
Looking around…
I love to surf around the online world, often I will go to Digg and follow thru…
It is quite hard to find good help…
I am really forever proclaiming that its difficult to find good honest help, but here is…
Zig Ziglar…
“If you don’t see yourself as a winner, then you cannot perform as a winner.”…
Yahoo results…
While browsing Yahoo I discovered this page in the results and I didn’t think it fit…
Digg…
While checking out DIGG today I noticed this…
Tumblr…
Tumblr linked to this place…
Wikia…
Wika linked to this website…
Yahoo results…
While browsing Yahoo I discovered this page in the results and I didn’t think it fit…
It is quite hard to find good help…
I am really forever saying that its hard to find good honest help, but here is…
Its hard to find good help…
I am regularly saying that its difficult to procure good help, but here is…
Yahoo News…
When checking out Yahoo News today I found this…
Looking around…
I love to browse in various places on the online world, often I will go to Stumble Upon and read and check stuff out…
News…
I was reading the Yahoo news and I saw this really interesting information…
Looking around…
I love to browse in various places on the internet, often I will go to Stumble Upon and read and check stuff out…
Tumblr…
Tumblr linked to this website…
Tumblr…
Tumblr linked to this website…
Bing results…
While browsing Bing I found this page in the search results and I didn’t think it match…
Tumblr…
Tumblr linked to this place…
Yahoo News…
When checking out Yahoo News yesterday I found this…
Looking around…
I love to browse a bit in various places on the vast online world, quite regularly I will go to Digg and follow thru…
Hard Day…
It was a hard day here today, so I just took to messing around on the internet and found…
Useful and precise…
Its quite hard to find super informative and accurate info but now I found…
Just Looking…
When I was browsing a bit this week end I saw a good post concerning…
Hard Day…
It was quite a hard day for me today, so I decided to take to piddeling around a lot online and rapidly found…
News…
I was reading the Yahoo news and I saw this really interesting info…
Nice Focus….
I really like the direction you’ve decided to take this blog….
Weebly article…
I saw someone talking about this on Weebly and it linked to…
Hard Day…
It was quite a hard day for me today, so I decided to take to messing around a lot on the internet and rapidly found…
Just read this ……
Really superb information can be found on site ….
Yahoo News…
When reading a bit Google and Bing News now I found this…
Iron Man 3…
I am only commenting to let you understand what a perfect encounter our child experienced using your web page. She mastered numerous issues, most notably what it’s like to possess an excellent helping heart to get men and women just comprehend a numbe…
Iron Man 3…
I precisely wanted to appreciate you again. I do not know the things that I would’ve used without the actual points contributed by you over such subject matter. Previously it was the fearsome dilemma in my opinion, nevertheless witnessing this profess…
Bing results…
While searching a bit Bing and Yahoo I happily discovered this page in the search results and I do not think it match…
News…
I was reading quickly the AOL news and I saw this quite cool and new information…
Useful and precise…
Its quite hard to find super informative and precise info but now I found…
Looking around…
I love to surf around the web, regularly I will go to Stumble Upon and follow thru…
Yahoo News…
When reading a bit Google and Bing News just now I noticed this…
Looking around…
I love to surf a bit around the vast online world, quite regularly I will go to Stumble Upon and follow thru…
Tumblr…
Tumblr just linked to this cool site…
Looking around…
I like to browse in various places on the web, often I will go to Digg and follow thru…
Iron Man 3…
Thanks so much for giving everyone such a splendid opportunity to read from this blog. It is usually so pleasing and as well , packed with a lot of fun for me and my office friends to search your site no less than thrice in 7 days to see the newest sec…
Looking around…
I like to look in various places on the online world, regularly I will go to Digg and follow thru…
Zig Ziglar…
“Expect the best. Prepare for the worst. Capitalize on what comes.”…
Online Article……
[...]The information mentioned in the article is some of the best available [...]……
Hard Day…
It was a hard day here today, so I just took to messing around on the internet and found…
Nice Focus….
I really like the direction you’ve decided to take this blog….
Just Looking…
When I was browsing today I saw a great post about…
Hard Day…
It was a really really tough day for me today, so I decided just now to take to messing around for a while online and very fast I realized…
……
you got a very good website, Gladiola I detected it through yahoo….
Tumblr article…
I saw someone talking about this on Tumblr and it linked to…
Just read this ……
Very excellent info can be found on web blog ….
My opinion is ……
would love to incessantly get updated great web blog ! ….
Hard Day…
It was a really really tough day for me yesterday, so I decided just now to take to messing around for a while online and very fast I realized…
It is really hard these days to find enough support…
My friend is truly forever but in a rash manner proclaiming that in all honesty that it is hard to really easily procure some quality online support, but there is…
buy phentermine without a script…
The blog was absolutely fantastic! Lots of great information and inspiration, both of which we all need!…