Хранилище на основе SQL и SVN

Моя команда разрабатывает новое приложение (С#,.Net 4), которое включает в себя репозиторий для контента общих пользователей. Нам нужно решить, где его хранить. Требования следующие:

  • Обмен файлами между пользователями.
  • Поддерживаемые версии.
  • Включить поиск по тегам и поддерживать дополнительные запросы, такие как "все файлы, созданные людьми из группы X"
  • Различные представления для разных людей (команда X видит свой контент, а никто другой не может их видеть).

Я не уверен, что лучше всего, поэтому:

  • Можно ли выполнять поиск по SVN с помощью тегов (а не тегов SVN, конечно, более похожих на теги stackoverflow)?
  • Есть ли смысл думать о дублировании - как SVN, так и SQL - контент?
  • Любые другие предложения?

Edit
Приложение позволяет пользователям писать тесты проверки, которые они впоследствии выполняют. Эти тесты распределяются между многими группами на разных сайтах. Нам нужно управлять версиями по обычным причинам - отменять изменения, внезапные удаления и т.д. Это требует SVN.
Дело в том, что мы также хотим добавить опцию, чтобы найти все те тесты, которые помечены как "срочные" и были выполнены к настоящему времени для целей отслеживания.

Надеюсь, теперь я стал более ясным:)

Изменить II
Я столкнулся с SvnQuery, и он выглядит хорошо, но имеет ли он API, который я могу использовать? Я предпочел бы использовать их механизм с моим собственным графическим интерфейсом.

EDIT III
Мой коллега решительно поддерживает использование только базы данных и забывает хранить на основе файлов. Он утверждает, что лучше для сохранения (что необходимо - тест больше, чем список команд для выполнения). Я был бы признателен за материалы по этому вопросу, поскольку я думаю, что это можно сделать так или иначе.

Спасибо!

Ответы

Ответ 1

Вы можете использовать SVN.

  • Общие файлы: очевидны и понятны. Он также поддерживает централизованную блокировку, которая может потребоваться для двоичных файлов.
  • Версия. Очевидно.
  • Поиск... Теперь мы попадаем в сложную территорию. Существует Lucene-аддон, который позволяет осуществлять поиск в Интернете вашего репо-opengrok, svnquery или svn-search. Это были бы ваши лучшие отправные точки для этого.
  • Невозможно остановить людей, которые видят то, что присутствует в репозитории svn, но вы можете остановить их доступ к нему. Я не знаю, можно ли легко управлять доступом, чтобы обеспечить скрытые папки, вы можете спросить разработчиков svn.

Есть несколько отличных API для работы с SVN, вероятно, наиболее доступным является SharpSVN, который дает вам сборку .net, но там доступны Python и C и всевозможные типы.

Как уже упоминалось, есть веб-инструменты, которые располагаются поверх SVN, чтобы предоставить ему представление, там Trac и Redmine, а также несколько репо-зрителей, таких как webSVN, поэтому есть много примеров кода, которые можно использовать для создания собственного.


Используете ли вы DVCS как git или меркурий? Я не был. Хотя у них есть хорошие механизмы сами по себе, это не похоже на то, что они делают после. Это позволяет людям работать самостоятельно и делиться с другими на основе однорангового подхода (хотя вы можете установить "центральное" репо и работать с ним, как все. Они не работают централизованно, совместно. Например, если вы и я редактируем тестовый пример локально, а затем нажимаем на центральное репо, у нас могут возникать проблемы слияния. У нас будут проблемы слияния, если файл является двоичным или иным не слиянием. В этом случае у вас есть проблема с потерей одного человека. Это одна из основных причин отказа от использования DVCS в вашем случае.


Если вы пытаетесь объединить общие тесты, просмотрите некоторые приложения, которые уже делают это. Недавно я заметил TestRail, что похоже на то, что вы пытаетесь сделать. Это не бесплатно (увы), но это дешево.

Ответ 2

Во-первых, рассмотрите возможность использования GIT, а не SVN. Это намного быстрее, и я подозреваю, что это более уместно в вашем случае использования: оно предназначено для распространения, что означает, что ваши пользователи смогут использовать его без доступа в Интернет, и у вас не будет никаких накладных расходов, связанных с общением с сервером при сохранении документов.

Кроме этого, я не в полной мере разбираюсь в вашем вопросе, но кажется, что его суть может быть лучше перефразирована так: "Могу ли я выполнить поиск на основе тегов/ограничение доступа на мою систему контроля версий или мне нужно создать слой сверху, чтобы сделать это?"

Если да, ответ заключается в том, что вам нужен слой сверху. Некоторые из них уже существуют как на веб-основе (например, Trac), так и на основе настольных компьютеров (например, GitX). Они не обязательно будут выполнять точно то, что вам нужно, но они могут стать хорошей отправной точкой для того, чтобы делать то, что вы ищете.