Pergunta

Say I criou uma filial na forçosamente de nossa base de código. Aqui está a especificação ramo:

//depot/code/main/... //depot/code/branch/...

Em seguida, no ramo, dizer que eu mover o a.txt arquivo ramificada -> b.txt usando

p4 integrate //depot/code/branch/a.txt //depot/code/branch/b.txt
p4 delete //depot/code/branch/a.txt

Agora, vamos dizer que algumas mudanças são feitas para a.txt no principal que eu gostaria de ter integrado em b.txt no ramo

Quando tento integrar usando a especificação ramo original, não reflete as alterações feitas a.txt no principal para b.txt - existe alguma maneira para que as alterações feitas no show principal no arquivo renomeado ?

A especificação ramo é bastante grande (centenas de alterações) e muito poucos arquivos foram renomeados no ramo, então eu gostaria de ter uma forma automatizada de fazer isso. Deixe-me saber se eu posso esclarecer qualquer coisa aqui - ele iria ajudar a ter um quadro branco;)

Obrigado! Sam

Foi útil?

Solução

Perforce 2009.1 tem renomeações adequadas, o que pode ajudar com isso - provavelmente, e em qualquer caso apenas para futuros renomeações. Consulte Perforce 2009.1 notas de lançamento , em particular:

#177023 * **
    The new 'p4 move' command allows for better support for
    renaming files.  A file must be already opened for 'edit'
    or 'add' in order to be moved.  Moved files can be synced,
    resolved and diffed against the repository just like files
    opened for 'edit'.  See 'p4 help move' for more info.

Você pode adicionar a renomeação na especificação ramo. Então, pelo menos as integrações será automática -. Mesmo que a especificação ramo será ainda mais longo e mais complicado

Outras dicas

Você pode adicionar '-3' switch para usar um novo motor para a integração, que irá detectar arquivos de destino que tenham sido previamente movidos com 'move P4', e automaticamente 'redirecionar'-se a seguir essas operações de movimentação.

p4 integrate -3 //depot/code/main/... //depot/code/branch/...

irá integrar as alterações no //depot/code/main/a.txt para //depot/code/branch/b.txt.

Esta é a característica 'UNODC' na versão atual 2010.2, mas será o comportamento padrão no próximo 2011.1.

A única maneira que eu conheço para ter alça Perforce isso para você é usar a especificação ramo para mapear o arquivo antigo no original para o novo arquivo no ramo. Talvez isso mudou com o novo comando de movimento nas versões recentes do Perforce, mas não que eu experimentei.

Você poderia script a criação de uma especificação de filial para a manipulação de arquivos movidos usando a saída de fstat P4.

Use o seguinte como ponto de partida:

ROOT_PATH="//depot/books/..."
FIRST_CHANGE=91212

p4 fstat -Os -T headChange -F "headAction=move/* headChange>$FIRST_CHANGE" $ROOT_PATH|grep headChange | sort -u|while read DUMMY1 DUMMY2 change; do p4 describe $change; done|grep "moved from"|sed 's/\.\.\./\t/g; s/\#[0-9]*//g; s/ moved from//g;'

Isso irá encontrar todos os arquivos // depot / livros / ... que foram movidos na mudança 91.212 ou mais tarde

Para nós, a saída Isto parece

// depot / livros / bar.txt //depot/books/foo.txt

Use-o para a elaboração de uma especificação ramo.

Eu não acredito que sim. Como não há p4 rename direta, você tem que integrar e apagar - uma vez que você tiver feito isso, integra de outro ramo não ir para o arquivo certo. Pelo menos essa tem sido a minha experiência.

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