O que é o Shelving no TFS?

317

Prateleiras no TFS são apenas um check-in simples para que outros membros da equipe possam ver o código-fonte?

ou seja, o código arquivado não será compilado, certo?

Matthew Lock
fonte

Respostas:

453

Prateleiras tem muitos usos. Os principais são:

  1. Troca de Contexto : salvando o trabalho em sua tarefa atual para poder alternar para outra tarefa de alta prioridade. Digamos que você esteja trabalhando em um novo recurso, cuidando do seu próprio negócio, quando seu chefe aparecer e disser "Ahhh! Bug Bug Bug!" e você deve abandonar as alterações atuais no recurso e corrigir o erro. Você pode arquivar seu trabalho no recurso, corrigir o bug, voltar e desmontar para trabalhar nas alterações mais tarde.
  2. Compartilhando conjuntos de alterações: se você deseja compartilhar um conjunto de alterações de código sem fazer check-in, pode facilitar o acesso de outras pessoas colocando-o em prateleira. Isso pode ser usado quando você está passando uma tarefa incompleta para outra pessoa (pobre alma) ou se você tiver algum tipo de código de teste, você NUNCA verificaria NUNCA que outra pessoa precisava executar. h / t para as outras respostas sobre como usar isso para revisões, é uma ideia muito boa.
  3. Salvando seu progresso : enquanto estiver trabalhando em um recurso complexo, você poderá encontrar-se em um "bom ponto" em que gostaria de salvar seu progresso. Este é o momento ideal para arquivar seu código. Digamos que você esteja cortando CSS / HTML para corrigir erros de renderização. Geralmente você bate nele, repetindo todos os argumentos possíveis que você pode imaginar até que pareça certo. No entanto, quando parecer correto, convém tentar limpar sua marcação para que outra pessoa possa entender o que você fez antes de fazer o check-in. Nesse caso, você pode arquivar o código quando tudo estiver correto , você poderá refatorar sua marcação, sabendo que, se a quebrar acidentalmente novamente, sempre poderá voltar e obter o seu conjunto de alterações.

Algum outro uso?

TJB
fonte
16
Quando prateleiras um changeset pode preservar as alterações pendentes localmente (útil para 2 ou 3) ou não (útil para 1)
dumbledad
2
A documentação do Visual Studio sobre prateleiras possui algum contexto adicional e informações.
Desenvolvedor Holístico
1
Também é usado por uma construção Gated para armazenar as alterações até que uma confirmação final possa ser feita.
Tore Østergaard 25/05
Uma coisa que notei é que as mudanças no Shelving não necessariamente revertem o código, nem o estado dos arquivos para o check-in. Portanto, enquanto você trabalha nessas mudanças, por exemplo, alterações de bug, como evitar cometer o código de mudança de bug junto com seu código arquivado?
Jacques
Acabei de perceber que os arquivos permanecem com check-out quando você seleciona a opção para preservar o conjunto de alterações localmente.
Jacques
105

Prateleiras é uma maneira de salvar todas as alterações na sua caixa sem fazer check-in. As alterações são mantidas no servidor. Posteriormente, você ou qualquer um de seus colegas de equipe poderá "desmontar" novamente em qualquer uma de suas máquinas.

Também é ótimo para fins de revisão. Na minha equipe, para fazer o check-in, arquivamos nossas alterações e enviamos um email com a descrição e o nome do conjunto de alterações. As pessoas da equipe podem visualizar o changeset e dar feedback.

FYI: A melhor maneira de revisar um shelveset é com o seguinte comando

tfpt review / shelveset: shelvesetName; nome do usuário

O tfpt faz parte do Team Foundation Power Tools

JaredPar
fonte
6
note que hoje não haveria motivo para arquivar manualmente as alterações e enviar informações por e-mail. O processo moderno é solicitar uma revisão de código.
precisa saber é o seguinte
34

Está certo. Se você criar uma prateleira, outras pessoas que fizerem as últimas atualizações não verão seu código.

Ele coloca suas alterações de código no servidor, que provavelmente é melhor armazenado em backup do que no seu PC de trabalho.

Ele permite que você faça as alterações em outra máquina, caso sinta vontade de trabalhar em casa.

Outros podem ver suas prateleiras (embora eu ache isso opcional), para que possam revisar seu código antes do check-in.

teedyay
fonte
Está certo. Se você criar uma prateleira, outras pessoas que fizerem as últimas atualizações não verão seu código. Significa 1) quando vou fazer o check-in do código no TFS, em seguida, o membro da minha equipe verá o código em seu systen se ele conseguir as atualizações mais recentes? 2) Então, por qual conta arquivamos o código, da mesma conta apenas veremos o código arquivado? por favor me corrijam se eu estiver errado
Krish
Você pode ver as prateleiras de outras pessoas, se quiser.
precisa saber é o seguinte
3
Para ser mais exato, "outras pessoas fazendo um get mais recente não vai baixar o seu código"
sergiol
18

Um ponto que está faltando em muitas dessas discussões é como você volta à mesma máquina na qual arquivou suas alterações. Talvez óbvio para a maioria, mas não era para mim. Acredito que você faça um Desfazer alterações pendentes - não é mesmo?

Entendo que o processo é o seguinte:

  1. Para arquivar suas alterações pendentes atuais, clique com o botão direito do mouse no projeto Arquivar, adicione um nome para arquivar
  2. Isso salvará (ou arquivar) as alterações no servidor (ninguém as verá)
  3. Você então desfaz as alterações pendentes para reverter seu código de volta ao último ponto de check-in
  4. Você pode fazer o que precisa com a linha de base do código revertido
  5. Você pode desmontar as alterações a qualquer momento (pode exigir algum conflito de mesclagem)

Portanto, se você deseja iniciar algum trabalho que talvez seja necessário Arquivar, faça o check-in antes de começar, pois o ponto de check-in é para onde você retornará ao executar a etapa Desfazer alterações pendentes acima.

Nick Wright
fonte
8
Você pode pular a etapa Desfazer alterações pendentes se desmarcar a caixa de seleção "Preservar alterações pendentes localmente" ao criar o conjunto de prateleiras.
Michael J.
14

Eu me deparo com isso o tempo todo, portanto, informações adicionais sobre filiais:

Se você estiver trabalhando com várias ramificações, os shelvesets serão vinculados à ramificação específica na qual você os criou. Portanto, se você deixar um conjunto de alterações enferrujar na prateleira por muito tempo e precisar desmontar para um ramo diferente, precisará fazer isso com o lançamento das ferramentas elétricas em julho.

tfpt unshelve /migrate
joshua.ewer
fonte
Fora do tópico, mas é verdade :-)
Tore Østergaard 25/05
2
Este comentário é tão antiga que foi adicionado antes resposta de estouro de pilha ettiquete foi estabelecido :-)
joshua.ewer
2

As prateleiras são como se suas alterações fossem armazenadas no controle de origem sem afetar as alterações existentes. Significa que se você fizer o check-in de um arquivo no controle de origem, ele modificará o arquivo existente, mas o armazenamento é como armazenar suas alterações no controle de origem, mas sem modificar as alterações reais.

Sr. N. Das
fonte
1

@JaredPar: Sim, você pode usar Shelvesets para revisões, mas lembre-se de que eles podem ser substituídos por você / outras pessoas e, portanto, não são estáveis ​​a longo prazo. Portanto, para análises relevantes de regulamentação, você nunca deve usar um Shelveset como base, mas um check-in (Changeset). Para uma revisão informal, está tudo bem, mas não para uma revisão formal (por exemplo, relevante para o ALC)!

Daniel
fonte
0

Se você estiver usando compilações Gated, quando uma compilação é acionada, ele cria um conjunto de prateleiras do seu espaço de trabalho que é enviado para compilação. Se a construção falhar, o conjunto de prateleiras será rejeitado. Se a compilação for bem-sucedida, um conjunto de alterações será criado e confirmado no TFS. Em qualquer um dos casos, a pessoa que faz o check-in / compilação precisará reconciliar o espaço de trabalho, que é tão simples quanto executar uma Get Latest.

Jim Roth
fonte