Pergunta

Eu tenho alguns commits que eu decidi, após o fato, vai ser mais trabalho filial, em seguida, trabalho tronco. Como faço para criar o ramo e reverter o tronco e ainda garantir fusão não é doloroso mais tarde?

É tão simples quanto copiar o tronco atual para um ramo e reverter o tronco? Ou isso irá criar dores de cabeça mais tarde?

Foi útil?

Solução

Eu acho método Philips seria algo como o seguinte, assumindo que o último "boa" revisão foi a 100 e você está agora em 130, para criar o novo ramo:

svn copy -r100 svn://repos/trunk svn://repos/branches/newbranch
svn merge -r 100:130 svn://repos/trunk svn://repos/branches/newbranch

Observe a idéia é preservar as alterações feitas nessas revisões para que você possa aplicá-los de volta ao tronco.

Para reverter tronco:

svn merge -r130:100 .
svn ci -m 'reverting to r100 (undoing changes in r100-130)' . 

(Seria não importa que ordem você executou estes em, para que você possa reverter tronco antes de criar o ramo.)

Em seguida, você poderia mudar para o novo ramo criado na repo:

svn switch svn://repos/branches/newbranch workdir

Outras dicas

Para ser honesto, eu copiar minhas alterações off, tronco revert, filial, em seguida, confirmar minhas alterações no ramo. A principal razão é a facilidade de mesclagem posterior (se você mais tarde fundir a partir do tronco para o ramo no ponto de ramificação, a fusão irá conter um revert as suas alterações iniciais).

Esta não pode ser a maneira "correta", como você pode sempre saltar revisões quando se fundem, mas é normalmente muito menos de uma dor de cabeça para mim mais tarde. Disclaimer:. Eu não sou nenhum svn guru, por isso pode ser mais fácil para mim porque eu estou fazendo errado - mas eu faço uso svn bastante

Não há nada de errado em seguir o método de Philip, que não deixa algum "cruft" no histórico de revisão. Se você quiser removê-las por causa arrumação, e as revisões são na cabeça que você pode removê-los a partir do repositório seguindo estas instruções .

Update: O método de Philip é melhor do que o sugerido na pergunta pelas razões afirmou. Mina e métodos de Filipe seria semelhante, exceto que insead de reverter o tronco Proponho retirar as revisões do histórico de revisão. (Como eu disse, isso só pode ser feito se todas as revisões que deseja remover estão no HEAD do repositório.)

Eu não tenho svn direita disponível aqui, mas é assim que eu iria tentar fazê-lo:

Determine o ponto na história onde você começou a cometer coisas ruins (revisão por exemplo "100" enquanto estiver em "130")

svn copy trunk branch # create your branch while preserving history
svn copy trunk@100 trunk #replace current revision with revision 100  

Isso deve ignorar o histórico ruim sem adicionar uma integração inversa (na verdade, você está ignorando a história do tronco entre 100 e 130, mas você manteve um link para que a história no ramo e acessar tronco, enquanto forçando o rev ainda vai produzir o história correta)

Em seguida

svn switch branch workdir

isso deve funcionar se você quiser remover completamente as alterações do tronco. Se houver pequenas você quer mantê-lo pode cereja escolher-los novamente de galho em tronco (se você usar svn 1,5 ele irá rastrear pontos de mesclagem e evitar conflitos espúrias)

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