O Xcode altera o storyboard não modificado e os arquivos XIB
Os storyboards são um problema real de uma perspectiva de fluxo de trabalho do git quando várias pessoas estão colaborando com eles. Por exemplo, o XML no arquivo .storyboard está iniciando<document>
TagtoolsVersion
esystemVersion
atributos alterados por qualquer configuração que o manipulador de arquivos mais recente esteja executando. Sincronizar as versões do Xcode de todas as pessoas parece ajudartoolsVersion
, massystemVersion
mudanças não importa o que, dependendo da versão Mac e / ou OS X específica que o desenvolvedor está executando.
Isso é idiota, mas principalmente inofensivo. O que nos preocupa, no entanto, é que em outros momentos outras mudanças são feitas automaticamente no storyboard apenas abrindo-as após umgit pull
. Ou seja, Alice faz alterações em um storyboard, confirma e envia para o repositório. Bob então puxa as alterações de Alice e abre o storyboard para fazer outras mudanças. No momento em que ele abre o storyboard, o ícone do arquivo muda imediatamente para um estado modificado, mas não salvo, e umgit status
mostra que qualquer número de mudanças estranhas ocorreram. Tudo isso sem Bob ter mudado nada ou salvado o arquivo.
A mudança automatizada mais comum que estamos vendo é o desaparecimento ou reaparecimento de todo o<classes>
tag hierachy perto do final de um arquivo de storyboard. Nós não descobrimos o que está causando isso. Podemos ter várias versões localizadas de um storyboard em vários diretórios .lproj e ao abri-las dentro do Interface Builder, a hierarquia de classes pode ser removida de algumas e adicionada a outras, ou deixada sozinha em algumas. Isso causa muito barulhogit diff
, mas na verdade não quebra nenhuma funcionalidade. Muitas vezes, vamos adicionar seletivamente as mudanças reais que fizemos no índice do git, cometê-las e, em seguida, descartar apenas o índice espontâneo, sem sentido.<classes>
alterar. Isso é para manter pequenos e agradáveis, como deveriam ser. Eventualmente, no entanto, torna-se muito para incomodar uma vez que o Xcode continua refazendo as alterações, e alguém apenas ragecommits-los juntamente com algumas outras coisas ... o que é bom até que alguém Xcode decide querer mudá-los de volta para não razão aparente. (Nosso histórico de commits tem muitos palavrões sobre isso.)
Alguém mais está vendo esse comportamento? Este é um bug do Xcode ou um problema de configuração em um ou mais dos nossos Macs para desenvolvedores? Vimos um comportamento semelhante ao colaborar com arquivos XIB, mas os storyboards parecem mais suscetíveis a isso.