SlideShare una empresa de Scribd logo
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 frontend
Leonidas 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 NoSQL
Antonio 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 Redis
Alberto Gimeno
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
Arkhotech
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
Francisco Viramontes
 
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
Carlos Huamaní
 
Git nivel samurai
Git nivel samuraiGit nivel samurai
Git nivel samurai
Sergio Gómez
 
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 gifs
betabeers
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
nscoder_mad
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
Claudio Montoya
 
Drupal workflow
Drupal workflowDrupal workflow
Drupal workflow
Nahuel Carvajal
 
Gitignore
GitignoreGitignore
Gitignore
NSCoder Mexico
 
Curso Grid CSS
Curso Grid CSSCurso Grid CSS
Curso Grid CSS
Webtraining Zone
 
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 carga
Domingo Suarez Torres
 
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
Sergio Castillo Yrizales
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
AlicantePHP
 
C++ Meetup Madrid
C++ Meetup MadridC++ Meetup Madrid
C++ Meetup Madrid
Míryam Gómez San Martín
 
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
Pablo 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

625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
luiscohailatenazoa0
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
ranierglez
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 

Último (20)

625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 

Git and XCode - Nsspain2013