SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
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

Más contenido relacionado

Similar a Git and XCode - Nsspain2013

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 frontendLeonidas Esteban González
 
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 NoSQLAntonio García-Domínguez
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go LangArkhotech
 
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 GithubCarlos Huamaní
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC sidelab
 
Git with gifs
Git with gifsGit with gifs
Git with gifsbetabeers
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
Plone 4 — what's up doc?
Plone 4 — what's up doc?Plone 4 — what's up doc?
Plone 4 — what's up doc?menttes
 
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 cargaDomingo Suarez Torres
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHPAlicantePHP
 
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 balasPablo Godel
 

Similar a 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
 

Último

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.pptxMiguelAtencio10
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
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 JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
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.FlorenciaCattelani
 
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 estossgonzalezp1
 
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...JohnRamos830530
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
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.pptxAlan779941
 
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 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Último (11)

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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
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
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
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.
 
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
 
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...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
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
 
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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Git and XCode - Nsspain2013