Я присоединился к новой команде, которая выбрала 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 каталоги имя вроде "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