SlideShare a Scribd company logo
1 of 39
Download to read offline
Git and XCode
Alfonso Alba
@aprendegit
martes, 17 de septiembre de 13
martes, 17 de septiembre de 13
How?
martes, 17 de septiembre de 13
Minimum man-hour
martes, 17 de septiembre de 13
• If you commit often:
• Your commits will be smaller
• Your history will be more readable
• It will be easier to cherry-pick or revert
martes, 17 de septiembre de 13
Commit often
XCode 4 XCode 5
ALT-CMD-C
martes, 17 de septiembre de 13
martes, 17 de septiembre de 13
• If you do not write good commit messages
martes, 17 de septiembre de 13
Write good commit
messages
XCode 4 XCode 5
You cannot commit empty messages
martes, 17 de septiembre de 13
• If you commit only related changes
• Your history will be more readable
• It will be easier to find bugs
• It will be easier to cherry-pick or revert
martes, 17 de septiembre de 13
Commit related
changes
You cannot commit chunks
XCode 4 XCode 5
martes, 17 de septiembre de 13
• If you use branches
• It will cost you less effort to switch
context
• It will be easier to do code review
• You will try new things more often
• It will be easier to refactor
martes, 17 de septiembre de 13
Use branches
Have you ever tried to change a branch in XCode?
XCode 4 XCode 5
martes, 17 de septiembre de 13
THE Problem:
Merging
martes, 17 de septiembre de 13
“My” experience with
git is:
martes, 17 de septiembre de 13
• You will have problems with
• xcuserdata
• xcworspacedata
• Core Data Models
• .xib files
• Story Boards
• Assets
martes, 17 de septiembre de 13
How to
deal with / mitigate
THE problem
martes, 17 de septiembre de 13
• xcuserdata
• Do not include this file in your
rempository
• Use a good .gitignore file
• http://stackoverflow.com/questions/
49478/git-ignore-file-for-xcode-projects
martes, 17 de septiembre de 13
• xcworkspacedata
• ... you will have to resolve conflics
manually
martes, 17 de septiembre de 13
• Core Data Models
• Create the models on code
(Daniel Eggert contribution)
• Use migrations
•Test your models
• Sessions and Workshops during the
conference!!
martes, 17 de septiembre de 13
• XIB and Story Boards
• ... well, if it was easy our life would be
much boring!!
martes, 17 de septiembre de 13
Do not use xib files or story
boards:
Yes, you will have to write code
martes, 17 de septiembre de 13
This is my code, don’t you dare touch it!!
martes, 17 de septiembre de 13
• If you want to use Interface Builder
• Split the story boards
• Use xib files instead of story boards
• Agree on a workflow and/or protocol
• Good team comunication
• Use file locking (subversion)
• git checkout --theirs / git checkout --ours
martes, 17 de septiembre de 13
DEMO:
git checkout-index
martes, 17 de septiembre de 13
baboon
https://github.com/SeyZ/baboon
martes, 17 de septiembre de 13
baboon
baboon client
working copy
baboon client
working copy
bare repo
martes, 17 de septiembre de 13
Other tools
martes, 17 de septiembre de 13
• git
• Interactive staging
• git-bisect
• git filter-branch / BGF repo cleaner (http://rtyley.github.io/bfg-repo-
cleaner/)
• Hooks
• Incremental merging:
http://softwareswirl.blogspot.nl/2013/05/git-incremental-merge.html
• sort-Xcode-project-file
http://danieltull.co.uk/blog/2013/09/05/easier-merging-of-xcode-project-
files/
(Chris Eidhof contribution)
• SemanticMerge http://www.semanticmerge.com/
martes, 17 de septiembre de 13
Is git your tool?
martes, 17 de septiembre de 13
• Git is not perfect
• BAD for binary files
• No folders
• Guess file renaming
• Too flexible
• Steep learning curve
• No file locking
martes, 17 de septiembre de 13
Access Control
martes, 17 de septiembre de 13
No history rewrites
martes, 17 de septiembre de 13
Undo
martes, 17 de septiembre de 13
• Enterprise tools
• Github Enterprise
• Stash
• Sourceforge
• PlasticSCM
martes, 17 de septiembre de 13
One more thing...
martes, 17 de septiembre de 13
Git is not a backup
system
martes, 17 de septiembre de 13
Thank you!!
martes, 17 de septiembre de 13
info@aprendegit.com
http://www.aprendegit.com
@aprendegit
@aalbagarcia
martes, 17 de septiembre de 13

More Related Content

Similar to Git and XCode - Nsspain2013

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto Gimeno
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
AlicantePHP
 

Similar to Git and XCode - Nsspain2013 (20)

Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontend
 
Hawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLHawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQL
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
 
Git nivel samurai
Git nivel samuraiGit nivel samurai
Git nivel samurai
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 
Git with gifs
Git with gifsGit with gifs
Git with gifs
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
 
Drupal workflow
Drupal workflowDrupal workflow
Drupal workflow
 
Gitignore
GitignoreGitignore
Gitignore
 
Curso Grid CSS
Curso Grid CSSCurso Grid CSS
Curso Grid CSS
 
Plone 4 — what's up doc?
Plone 4 — what's up doc?Plone 4 — what's up doc?
Plone 4 — what's up doc?
 
Grails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta cargaGrails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta carga
 
Web apps con angular y material design
Web apps con angular y material designWeb apps con angular y material design
Web apps con angular y material design
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
C++ Meetup Madrid
C++ Meetup MadridC++ Meetup Madrid
C++ Meetup Madrid
 
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balasPHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
 

Recently uploaded

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Recently uploaded (12)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Git and XCode - Nsspain2013