Есть ли другое решение, как 'svnbridge'?
Я присоединился к новой команде, которая выбирает tfs 2012 для управления исходным кодом, потому что он обновлен с vss. Но, как я знаю, больше членов команды любят subverion.
В этих нескольких устах трудно использовать tfs, и я считаю, что SvnBridge может помочь разработчикам использовать svn-клиент для работы с tfs.
Мне удалось настроить SvnBridge-Server на сервере приложений tfs (iis-header:tfssvn.mydomain.com,iis-port 80). Так что он может сделать это:
- Обозреватель файлов и папок в проводнике, используйте http://tfssvn.mydomain.com/
- Просмотрите некоторые папки и файлы в TortoiseSVN, пользователь http://tfssvn.mydomain.com/, НО Некоторые папки не могут отображаться в списке, возможно, он имеет недопустимый характер, например "R&D" и т. Д. Родительская папка "R&D" не может отображать список, поэтому все файлы и файлы в нем не могут быть перечислены или прочитаны.(Но в оригинальном Subversion Repository поддерживается direcotries, названный как "R&D". Я проверил это.)
- НЕ МОЖЕТ ПРОВЕРИТЬ. Все папки и файлы не могут быть извлечены с помощью 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, то я рекомендую вам дать его попытка