Я думаю, что это ошибка в старом gcc. Более новые gcc и VS правильно отлавливают выданное исключение и устанавливают флаг плохого бита вместо распространения исключения через потоковые методы. Мусор печатается, потому что c
остается неинициализированным после неудачной попытки чтения. Вы можете сделать так, чтобы поток генерировал исключение битового бита, установив флаги исключений в потоке:
try
{
io::filtering_istream in;
in.exceptions(::std::ios_base::badbit | ::std::ios_base::failbit | ::std::ios_base::eofbit);
in.push(TestFilter());
in.push(source);
char c;
in >> c;
cout << c;
} catch (boost::exception& e) {
cout << "not expected boost exception";
return 1;
}
catch(::std::exception const & e)
{
cout << "Expected std exception";
return 2;
}
также см. Документация по исключениям iostream
Нет никакой потребности настроить Подверсию с Apache. Я использовал Подверсию в течение многих лет и никогда не должен был делать так (хотя существуют причины, почему Вы были бы, главным образом чтобы сделать с инфраструктурой аутентификации). Так как Вы находитесь в мире Windows, я видел, что Сервер VisualSVN прибывает настоятельно рекомендованный и легок просто настроить и пойти.
Проверьте Запись SVNBook: Выбор Конфигурации Сервера. Это говорит о за и против различных способов получить доступ к серверу Подверсии.
Протокол SVN является самым простым настроить и администрировать, но вероятно не будет работать через корпоративные брандмауэры (но Apache будет через HTTP).
Может быть выгодно когда порт 3 690 потребностей быть закрытым. Это также позволяет пользователям просмотреть код с помощью браузера, который имеет за и против. У Вас не должно быть клиента Подверсии для наблюдения кода, но веб-браузер делает вшивый браузер репозитория.
Установка его не слишком хитра. Я нашел, что эта страница была полезна.
Но, если Вы просто используете его в локальной среде VM, svnserve
был бы хорошо для Вас.
Мы используем Подверсию в малочисленной команде (6 человек) среда, с помощью Визуального репозитория SVN. Первоначально у нас не было веб-сервера Apache, просто IIS, но теперь мы также выполняем Apache, но нет никакого неопровержимого довода для использования Apache для репозитория.
Преимущество для хостинга Вашего репозитория SVN через Apache играет роль, если Вы хотите ACLs на своем репозитории.
Можно настроить стандартную аутентификацию и ограничить полномочия на на каталог (или на файл, если Вы чувствуете потребность), основание. Например, можно настроить репозиторий для разрешения гостевого контроля, но любая запись в репозиторий потребует определенного, действительного пользователя.
Результат использования Apache для аутентификации пользователей означает, что Вы не должны определять своих пользователей в .htpasswd. Apache может сцепиться в LDAP, большую часть любого типа SQL-сервера, или даже использовать аутентификацию Kerberos.
Используя упрощенное svnserve
может быть достаточно. Однако мелкомодульные полномочия не могут быть применены, и Вы не сможете сцепиться в другую пользовательскую базу данных для аутентификации.
Но из Вашего описания, все вышеупомянутое может быть излишеством. Предложения Apache преимуществ в основном бесполезны для отдельного пользователя и не стоят стычки.
Ситуация я думаю, что Вы достигаете, состоит в том, если Вы хотите использовать протокол WebDAV для доступа к репозиторию SVN. В этом случае Вы в основном позволяете Apache обрабатывать доступ к файлу как посредника к самому SVN (никакие прямые подключения к репозиторию).
Я услышал, что это работает вполне прилично, но существует несколько альтернатив. Взгляните на Книгу SVN (проверьте Google) для начальной точки.
Вы не должны использовать Apache. Существует пользовательский сервер - svnserve.exe может использоваться вместо этого. Это работает на порте 3690 по умолчанию, но это может быть установлено на другой порт при помощи --port
переключитесь при установке его.
Greg Hewgill дал Вам ссылку, которая скажет Вам что версия сервера Подверсии использовать, и различные варианты использования. Это в основном сводится к svnserve
если Вы не должны интегрироваться ни с каким видом аутентификации. Используйте Apache при необходимости в более сложных сценариях.
У меня есть коммерческая консоль Windows, которая обрабатывает svnserve. Мой профиль имеет ссылку для наблюдения той утилиты. Если Вы действительно решаете использование Apache я рекомендую использовать Сервер VisualSVN.
SVN может быть системой клиент-сервер, если Вы хотите совместно использовать свой код с другими людьми. Однако, если Вы хотите работать над одним только своим кодом (даже больше чем от одного компьютера!) Вам не нужен никакой сервер вообще!
Можно использовать сборку file://-protocol почти во все клиенты SVN и локальный репозиторий SVN.
Ваш репозиторий SVN может также работать от сетевого ресурса. Однако необходимо использовать этот подход, только если Вы работаете над ним один!
Используя Apache, можно получить доступ репозиторию через WebDAV, который является по HTTP на стандартном порте, таким образом, можно получать доступ/публиковать репозиторию позади брандмауэра корпораций, например, который не может позволить svnserve
порт.