Devo ignorar o arquivo xcodeproject / project.pbxproj?


101

em um projeto XCode, eu costumava ter o arquivo xcodeproject / project.pbxproj alterado, mas informações inúteis para mim, para compilar.

Devo ignorar este arquivo e o arquivo xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate?


Os arquivos .xcuserstate podem ser ignorados, mas não o arquivo pbxproj.
Kendall Helmstetter Gelner

Não, aqui está sua resposta: stackoverflow.com/questions/49478/…
jeswang

Respostas:


128

Atualizar à luz do Swift Package Manager: Se você está construindo um projeto como um pacote Swift - você definitivamente deve ignorar este arquivo, pois ele pode ser gerado usando o sistema de arquivos como fonte de verdade. Você pode fazer isso usando o seguinte comando:

$ cd ~/Projects/MyProjectFolder/
$ swift package generate-xcodeproj

Para resposta não SwiftPM - veja abaixo.

Este arquivo contém a lista de todos os arquivos no projeto, configurações de destinos e quais arquivos pertencem a quais destinos. É provavelmente o arquivo mais pesado do pacote do projeto. Você não deve ignorar este arquivo. Existem alguns pontos para isso:

  1. Você pode não querer trabalhar neste projeto sozinho ou;
  2. Você está planejando trabalhar no projeto de máquinas diferentes;
  3. Você vai querer compartilhar sua base de código com outras pessoas;

6

Esse é o único arquivo que você deseja em seus repositórios do pacote xcodeproj. Esse arquivo contém todas as informações para arquivos de destino e configurações de compilação.


1
Esta resposta pode ter sido verdadeira, mas atualmente está errada. Não é verdade que contém "todas as informações" (várias coisas, por exemplo, executáveis ​​personalizados são armazenados em um arquivo diferente, por exemplo, os espaços de trabalho são armazenados em um arquivo diferente, etc), nem é verdade que é o "único arquivo" que você deseja armazenar. cf a pergunta sobre o que incluir em .gitignore - stackoverflow.com/questions/49478/…
Adam

1
que parece bem pensado ... siga isso no futuro.
Grady Player

4

Infelizmente, se suas configurações de compilação incluem assinatura de código, você deve inserir novamente sua entidade de assinatura de código após cada "git pull" se outro membro da equipe a tiver alterado. Parece-me que esta informação deve estar nas configurações do usuário, não no arquivo pbxproj global.


2
Você pode configurar a assinatura de código de modo que cada um de vocês no projeto tenha um perfil de assinatura de código diferente que corresponda à mesma configuração (compartilhada) no projeto, por exemplo, usando um nome curinga e, em seguida, cada um de vocês correspondendo-o separadamente, ou por exemplo, todos na mesma equipe do iTunes e compartilhando perfis.
Adam

3

Se você excluir project.pbxproj, as compilações do Jenkins falharão. Portanto, isso é importante se você usar o Jenkins.


0

Descobri que também preciso preservar o (s) arquivo (s) xcworkspace. Se não, projeto com um subprojeto quebrado.


0

Você pode usar o Xcodegen para gerar um pbxproj a partir de um arquivo de especificação de projeto YAML, então você pode ignorar o pbxproj no git e gerá-lo sempre que precisar.

Já usei o Xcodegen em um segundo projeto que tem uma arquitetura modular (muitos pbxprojs) e mais de 8 desenvolvedores estão trabalhando nisso.

https://github.com/yonaskolb/XcodeGen

Espero que ajude.


0

project.pbxproj é um arquivo importante no pacote de configuração do Xcode. É responsável por manter as referências a todos os arquivos vinculados e seus agrupamentos, estruturas vinculadas e, o mais importante, as configurações de construção do projeto. Por causa disso, não podemos excluir project.pbxproj do controle de versão.

Aqui está meu general .gitignorepara meu projeto Xcode.

# OS X Finder
.DS_Store

# Xcode per-user config
*.mode1
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*.pbxuser
*.xcworkspace
xcuserdata

# Build products
build/
*.o
*.LinkFileList
*.hmap

# Automatic backup files
*~.nib/
*.swp
*~
*.dat
*.dep
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.