Pergunta

Cenário:

Estou usando o SVN: External para pegar microsoft.practices.servicelocation do codePlex. No entanto, referenciar o arquivo CSProj em meu próprio projeto causa uma atualização de 2005 a 2008. Isso torna minha cópia do arquivo do projeto diferente da cópia base e não consigo atualizar o projeto da Subversão.

Uma atualização de ... deps microsoft.practices.servicelocation resulta em:

Command          Update
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocatorProvider.cs
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocator.cs
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\Readme.txt
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\Properties
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\Microsoft.Practices.ServiceLocation.csproj
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\IServiceLocator.cs
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\ActivationException.Desktop.cs
Tree conflict    ...\deps\Microsoft.Practices.ServiceLocation\ActivationException.cs
Completed        At revision: 43682
warning!         One or more files are in a conflicted state.

Uma atualização de ... deps resulta em:

Command          Update
Completed        At revision: 0

Uma atualização da raiz resulta em:

Command           Update
External          ...\deps\Microsoft.Practices.ServiceLocation
External failed   ...\deps\Microsoft.Practices.ServiceLocation
Error             Working copy '...\deps\Microsoft.Practices.ServiceLocation' locked
Error             Please execute the 'Cleanup' command.
Completed         ...\deps\Microsoft.Practices.ServiceLocation - at revision: 0

A bagunça alegando que a cópia de trabalho está bloqueada parece estar errada, executando o bloqueio de liberação na pasta Microsoft.Practices.ServiceLocation resulta em uma mensagem informando "Não há nada a ser desbloqueado. Nenhum arquivo tem um bloqueio nesta cópia de trabalho". O mesmo resultado se eu executar o comando na raiz.

A execução de uma limpeza não mudou nada.

Estou usando o Tortoisesvn.

  1. Posso dizer ao Visual Studio 2008 para tratar um projeto/diretório como reado para evitar uma atualização?
  2. Existe um comando secreto de subversão que posso executar para fazer isso funcionar?
  3. Por que uma atualização de arquivos que não mudou causa um conflito em árvore?

Editar: Eu pesquisei alguns no Google e encontrei a documentação de subversão explicando conflitos de árvores em http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html. Mudei minha terceira pergunta, pois não entendo por que estou recebendo um conflito de árvore ao atualizar arquivos que não foram alterados.

Foi útil?

Solução

O Visual Studio 2008 abrirá com prazer uma solução somente leitura (este é o uso normal e sem check-out).

Mas o VS2008 não pode abrir os arquivos de solução vs 2005, por isso sempre tenta atualizar. Você parece estar procurando uma maneira de abrir uma solução de 2005 em 2008 sem a atualização, e não acho que isso seja possível.

Ou obtenha uma cópia do VS 2005 (esta pode ser uma edição expressa) ou obtenha o projeto CodePlex como um todo para atualizar (lembrando que o VS 2008 terá como alvo .NET 2.0).

Outras dicas

Existem várias opções, dependendo de como você está envolvido com o projeto e se você o mudará.

Para um projeto que estou usando principalmente para as bibliotecas, não coloco os projetos de código aberto em minha solução - apenas as DLLs que mantenho no meu repositório de controle de origem em uma pasta de bibliotecas.

Quando você está depurando, pode entrar no código da biblioteca no VS2008 sem realmente abrir o arquivo do projeto de 2005; Portanto, nenhuma atualização é necessária.

Quando preciso trabalhar no código da biblioteca OpenSource, abro -a em sua própria solução. Se ele precisar atualizar para o VS2008, eu deixo - não é grande coisa, pois apenas os arquivos do projeto são alterados - não o código -fonte. Como está no controle de origem, você sempre pode reverter os arquivos do projeto para os originais ou renomear suas novas cópias e manter 2 arquivos CSPROJ lado a lado.

Eu só faço uma atualização do SVN com tartaruga nos projetos de código aberto e não recebo conflitos. O SVN mesclará quaisquer alterações na minha cópia. Se eu tiver alterações necessárias para o projeto de código aberto, envio um patch e não comprometo da minha cópia.

Se este é um projeto de que você é um desenvolvedor ativo e os outros membros da equipe precisam ficar no VS2005, você pode carregar o lado vs2005 do lado a by sem problemas. Eu tive 4-5 cópias de VS instaladas na mesma máquina - a única desvantagem é o espaço em disco.

Parece que você pode precisar fazer uma nova compra do projeto em uma nova pasta, se tiver muitos conflitos. Em seguida, você pode usar uma boa ferramenta Diff para resolver os conflitos manualmente - eu uso o Winmerge.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top