Есть ли другое решение, как 'svnbridge'?

Я присоединился к новой команде, которая выбирает tfs 2012 для управления исходным кодом, потому что он обновлен с vss. Но, как я знаю, больше членов команды любят subverion.

В этих нескольких устах трудно использовать tfs, и я считаю, что SvnBridge может помочь разработчикам использовать svn-клиент для работы с tfs.

Мне удалось настроить SvnBridge-Server на сервере приложений tfs (iis-header:tfssvn.mydomain.com,iis-port 80). Так что он может сделать это:

  1. Обозреватель файлов и папок в проводнике, используйте http://tfssvn.mydomain.com/
  2. Просмотрите некоторые папки и файлы в TortoiseSVN, пользователь http://tfssvn.mydomain.com/, НО Некоторые папки не могут отображаться в списке, возможно, он имеет недопустимый характер, например "R&D" и т. Д. Родительская папка "R&D" не может отображать список, поэтому все файлы и файлы в нем не могут быть перечислены или прочитаны.(Но в оригинальном Subversion Repository поддерживается direcotries, названный как "R&D". Я проверил это.)
  3. НЕ МОЖЕТ ПРОВЕРИТЬ. Все папки и файлы не могут быть извлечены с помощью TortoiseSVN или svn командной строки.

SvnBridge ( http://svnbridge.codeplex.com/), в котором я использовал новейшую версию v6.2, выпущенную 12 сентября 2013 года, полгода назад, и последнюю регистрацию 13 октября 2013 года. Много ошибок в "ОБСУЖДЕНИЯХ", боюсь, проект остановился.

Я хочу знать, что есть какие-то другие решения, такие как "SvnBridge", которые могут поддерживать svn-client, использующий tfs?

Журнал ошибок от SvnBridge Sever:

Time     : 2014/2/18 0:09:59
Message  : The remote server returned an error (404) not found.
User     : my-domain-name
Request  : PROPFIND /!svn/bc/45787/CJG/01_Document HTTP/1.1
<?xml version="1.0" encoding="utf-16"?>
<propfind xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="DAV:">
  <prop>
    <resourcetype xmlns="DAV:" />
    <getcontentlength xmlns="DAV:" />
    <deadprop-count xmlns="http://subversion.tigris.org/xmlns/dav/" />
    <version-name xmlns="DAV:" />
    <creationdate xmlns="DAV:" />
    <creator-displayname xmlns="DAV:" />
  </prop>
</propfind>

Exception:
   System.Net.WebException: The remote server returned an error (404) not found.
   at System.Net.HttpWebRequest.GetResponse()
   at CodePlex.TfsLibrary.ObjectModel.WebTransferService.DownloadBytes(String url, ICredentials credentials)
   at SvnBridge.Infrastructure.FileRepository.GetFile(ItemMetaData item, Guid repositoryUuid)
   at SvnBridge.SourceControl.TFSSourceControlProvider.ReadFile(ItemMetaData item)
   at SvnBridge.Proxies.RemotingInvocation.Proceed()
   at SvnBridge.Proxies.TracingInterceptor.Invoke(IInvocation invocation)
   at SvnBridge.Proxies.RemotingInvocation.Proceed()
   at SvnBridge.Proxies.RetryOnExceptionsInterceptor`1.Invoke(IInvocation invocation)
   at SvnBridge.Proxies.RemotingInvocation.Proceed()
   at SvnBridge.Proxies.ProxyFactory.RemotingProxy.Invoke(IMessage msg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at SvnBridge.SourceControl.TFSSourceControlProvider.ReadFile(ItemMetaData item)
   at SvnBridge.Nodes.FileNode.GetContentLength()
   at SvnBridge.Nodes.FileNode.GetProperty(RequestHandlerBase handler, XmlElement property)
   at SvnBridge.Nodes.BcFileNode.GetProperty(RequestHandlerBase handler, XmlElement property)
   at SvnBridge.Handlers.PropFindHandler.WriteProperties(INode node, List`1 properties, TextWriter output, Boolean isFolder)
   at SvnBridge.Handlers.PropFindHandler.WriteBcResponse(TFSSourceControlProvider sourceControlProvider, String requestPath, String depthHeader, PropData data, Stream outputStream)
   at SvnBridge.Handlers.PropFindHandler.HandleProp(TFSSourceControlProvider sourceControlProvider, String requestPath, String depthHeader, String labelHeader, PropData data, Stream outputStream)
   at SvnBridge.Handlers.PropFindHandler.Handle(IHttpContext context, TFSSourceControlProvider sourceControlProvider)
   at SvnBridge.Handlers.RequestHandlerBase.Handle(IHttpContext context, IPathParser pathParser, NetworkCredential credentials)
   at SvnBridge.Net.HttpContextDispatcher.Dispatch(IHttpContext connection)
   at SvnBridgeServer.SvnBridgeHttpHandler.ProcessRequest(HttpContext context)

Stack Trace:
   at System.Net.HttpWebRequest.GetResponse()
   at CodePlex.TfsLibrary.ObjectModel.WebTransferService.DownloadBytes(String url, ICredentials credentials)
   at SvnBridge.Infrastructure.FileRepository.GetFile(ItemMetaData item, Guid repositoryUuid)
   at SvnBridge.SourceControl.TFSSourceControlProvider.ReadFile(ItemMetaData item)
   at SvnBridge.Proxies.RemotingInvocation.Proceed()
   at SvnBridge.Proxies.TracingInterceptor.Invoke(IInvocation invocation)
   at SvnBridge.Proxies.RemotingInvocation.Proceed()
   at SvnBridge.Proxies.RetryOnExceptionsInterceptor`1.Invoke(IInvocation invocation)
   at SvnBridge.Proxies.RemotingInvocation.Proceed()
   at SvnBridge.Proxies.ProxyFactory.RemotingProxy.Invoke(IMessage msg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at SvnBridge.SourceControl.TFSSourceControlProvider.ReadFile(ItemMetaData item)
   at SvnBridge.Nodes.FileNode.GetContentLength()
   at SvnBridge.Nodes.FileNode.GetProperty(RequestHandlerBase handler, XmlElement property)
   at SvnBridge.Nodes.BcFileNode.GetProperty(RequestHandlerBase handler, XmlElement property)
   at SvnBridge.Handlers.PropFindHandler.WriteProperties(INode node, List`1 properties, TextWriter output, Boolean isFolder)
   at SvnBridge.Handlers.PropFindHandler.WriteBcResponse(TFSSourceControlProvider sourceControlProvider, String requestPath, String depthHeader, PropData data, Stream outputStream)
   at SvnBridge.Handlers.PropFindHandler.HandleProp(TFSSourceControlProvider sourceControlProvider, String requestPath, String depthHeader, String labelHeader, PropData data, Stream outputStream)
   at SvnBridge.Handlers.PropFindHandler.Handle(IHttpContext context, TFSSourceControlProvider sourceControlProvider)
   at SvnBridge.Handlers.RequestHandlerBase.Handle(IHttpContext context, IPathParser pathParser, NetworkCredential credentials)
   at SvnBridge.Net.HttpContextDispatcher.Dispatch(IHttpContext connection)
   at SvnBridgeServer.SvnBridgeHttpHandler.ProcessRequest(HttpContext context)

Headers:

Transfer-Encoding: chunked
Content-Type: text/xml
Accept-Encoding: gzip
Authorization: Basic d2FuZG9uZVxyeWFuemh1OjEyMzQ1Ng==
Host: wddevsvr01
User-Agent: SVN/1.8.5 (x64-microsoft-windows) serf/1.3.2 TortoiseSVN-1.8.4.24972
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops
Depth: 1

1 ответ

Если кто-то застрял с оригинальными (то есть не-git) репозиториями TFS, но очень хотел бы, чтобы отдельные разработчики обращались к такому специфичному для TFS контенту через git-svn или subversion, то использование моей сильно переработанной версии SvnBridge может помочь: https://github.com/andim2/SvnBridge
(объявление на Announce: SvnBridge: новая версия (сильно улучшена))

Обратите внимание, что оригинальный код SvnBridge (опубликованный бывшим сайтом CodePlex) довольно проблематичен (неполон / содержит ошибки). Моя текущая версия немного меньше, но, тем не менее, не полностью стабильна. Итак, если ваш вариант использования совместим (то есть, умеренные / ограниченные требования или более высокие требования, но достаточные возможности в случае сбоя и отладки) с использованием такого относительно специального инструмента для доступа к TFS, то я рекомендую вам дать его попытка

Другие вопросы по тегам