SlideShare a Scribd company logo
Git muito além do
controle de versão
Alex Porcelli
Business Automation Architect, Red Hat
uma alternativa para armazenamento de dados
twitter.com/porcelli
github.com/porcelli
TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados
TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados
Git is the dominant choice for
version control for developers
today, with almost 90% of developers
checking in their code via Git
https://insights.stackoverflow.com/survey/2018
TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados
101
TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados
Bibiliotecas
Transações
Réplicas
Performance
Como Drools & jBPM
tooling utiliza git
como nosql?
//create new repository
FileSystem fs = FileSystems.newFileSystem(URI.create("git://repo);
//commits
Files.write(fs.getPath("/pom.xml"),
Files.readAllBytes(new File("input.xml").toPath()));
Files.write(fs.getPath("/dummyA/pom.xml"),
Files.readAllBytes(new File("inputA.xml").toPath()));
//list branches
fs.getRootDirectories();
# nio2 provider
Transações
Réplicas
Performance
Cluster
Alta Disponibilidade
TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados
TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados
# git init --bare .
Git is a content-
addressable filesystem.
# find objects
# find objects -type f
# echo ‘{content}' |
git hash-object -w
--stdin
# git cat-file –p
{hash}
# git cat-file –t
{hash}
# git update-index --
add --cacheinfo 100644
{hash} {path}
# git ls-files --stage
# git write-tree
tree
blob blob tree
blob
file1.txt
file2.txt
file3.txt
dir
# echo ‘{message}' |
git commit-tree {hash}
tree
blob blob tree
blob
file1.txt
file2.txt
file3.txt
dir
commit
# echo ‘{message}' | git
commit-tree {hash} –p
{previous_commit_hash}
# git cat-file –p
{hash}
# git log
fatal: your current branch
'master' does not have any
commits yet
# echo '{hash}' >
refs/heads/master
# git update-ref
refs/heads/master
{commit_hash}
# git log
# git update-ref
refs/heads/{branch_name}
{commit_hash}
# cat HEAD
# git symbolic-ref HEAD
# git symbolic-ref
HEAD refs/heads/test
Obrigado
Alex Porcelli
Business Automation Architect, Red Hat
twitter.com/porcelli
github.com/porcelli

More Related Content

PPTX
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
PPTX
simple Git
PDF
Writing Redis Module with Rust
PDF
XXXsrc 2018 -the record of the past year-
PDF
Amethyst: Past, Present, Future
PDF
News from Git in Eclipse - EclipseCon 2015 Europe
PPTX
Git missiontomars 2015-03-10
PPTX
Cool new stuff in JGit and EGit - Eclipse Democamp Munich 2013-06-12
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
simple Git
Writing Redis Module with Rust
XXXsrc 2018 -the record of the past year-
Amethyst: Past, Present, Future
News from Git in Eclipse - EclipseCon 2015 Europe
Git missiontomars 2015-03-10
Cool new stuff in JGit and EGit - Eclipse Democamp Munich 2013-06-12

Similar to TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados (20)

PPTX
Git essential training & sharing self
PPTX
Git workshop 33degree 2011 krakow
PPTX
Brown bag sessions git workshop
PDF
VCS for Teamwork - GIT Workshop
PPTX
Migrating To GitHub
PDF
Managing e commerce systems codebase with git
PPTX
Linux GIT commands
PDF
Git: An introduction of plumbing and porcelain commands
PDF
GTFO: Git Theory For OpenSource
PPTX
Git demo for beginners-Learning path to evolve
PDF
Git Advanced
PDF
What the git? - SAP Inside Track Munich 2016
PPTX
Git and Github
PDF
Loading...git
PPTX
Git and github
PPTX
Learn Git - For Beginners and Intermediate levels
PPTX
Git Github GDSC.pptx
PDF
Distributed Collaboration on RDF Datasets Using Git: Towards the Quit Store
PPT
PDF
Hello git
Git essential training & sharing self
Git workshop 33degree 2011 krakow
Brown bag sessions git workshop
VCS for Teamwork - GIT Workshop
Migrating To GitHub
Managing e commerce systems codebase with git
Linux GIT commands
Git: An introduction of plumbing and porcelain commands
GTFO: Git Theory For OpenSource
Git demo for beginners-Learning path to evolve
Git Advanced
What the git? - SAP Inside Track Munich 2016
Git and Github
Loading...git
Git and github
Learn Git - For Beginners and Intermediate levels
Git Github GDSC.pptx
Distributed Collaboration on RDF Datasets Using Git: Towards the Quit Store
Hello git
Ad

More from tdc-globalcode (20)

PDF
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
PDF
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
PDF
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
PDF
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
PDF
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
PDF
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
PDF
TDC2019 Intel Software Day - Inferencia de IA em edge devices
PDF
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
PPT
Trilha .Net - Programacao funcional usando f#
PDF
TDC2018SP | Trilha Go - Case Easylocus
PDF
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
PDF
TDC2018SP | Trilha Go - Clean architecture em Golang
PDF
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
PDF
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
PDF
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
PDF
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
PDF
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
PDF
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
PDF
TDC2018SP | Trilha .Net - .NET funcional com F#
PDF
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - Inferencia de IA em edge devices
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha .Net - Programacao funcional usando f#
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
Ad

Recently uploaded (20)

PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PDF
Electrolyte Disturbances and Fluid Management A clinical and physiological ap...
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
Insiders guide to clinical Medicine.pdf
PPTX
Onica Farming 24rsclub profitable farm business
PPTX
Open Quiz Monsoon Mind Game Final Set.pptx
PDF
Pre independence Education in Inndia.pdf
PPTX
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PPTX
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
PDF
English Language Teaching from Post-.pdf
PPTX
Open Quiz Monsoon Mind Game Prelims.pptx
PPTX
Introduction and Scope of Bichemistry.pptx
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
NOI Hackathon - Summer Edition - GreenThumber.pptx
PPTX
Cell Structure & Organelles in detailed.
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
PSYCHOLOGY IN EDUCATION.pdf ( nice pdf ...)
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
Electrolyte Disturbances and Fluid Management A clinical and physiological ap...
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
Insiders guide to clinical Medicine.pdf
Onica Farming 24rsclub profitable farm business
Open Quiz Monsoon Mind Game Final Set.pptx
Pre independence Education in Inndia.pdf
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
O5-L3 Freight Transport Ops (International) V1.pdf
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
English Language Teaching from Post-.pdf
Open Quiz Monsoon Mind Game Prelims.pptx
Introduction and Scope of Bichemistry.pptx
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
O7-L3 Supply Chain Operations - ICLT Program
NOI Hackathon - Summer Edition - GreenThumber.pptx
Cell Structure & Organelles in detailed.
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PSYCHOLOGY IN EDUCATION.pdf ( nice pdf ...)
102 student loan defaulters named and shamed – Is someone you know on the list?

TDC2018SP | Trilha NoSQL - Git muito alem do controle de versao, uma alternativa para armazenamento de dados

Editor's Notes

  • #3: Disclaimer: assim como todo nosql, não é todas as aplicações que se adequam ao uso do git como storage! SE FOR O SEU CASO, no mínimo vc vai sair daqui entendendo um pouco como Git funciona internamente! Então não tem como não sair daqui sem adicionar alguma coisa no seu dia a dia de desenvolvedor!
  • #4: Quem usa GIT aqui?
  • #5: StackOverflow insights 2018 87.2% (insights.stackoverflow.com) GitHub community reached 24 million developers working across 67 million repositories (https://octoverse.github.com)
  • #6: Agora… quem já se enrolou, principalmente no começo, com Git? Pensou que perdeu código… E depois descobriu que vc na vdd não perdeu... e procurando descobriyu coisas como reflog ou outras magias negras para recuperar suas alterações?!
  • #7: git init echo ‘hello’ > file1.txt git add . git commit -m "one more file" git branch my_branch git checkout my_branch echo ‘hello’ > file2.txt git add . git commit -m "one more file" git checkout master git merge my_branch git log Ainda tem: clone, push, pull, cherry-pick, stash, rebase, squash Mas vcs sacaram a idéia
  • #8: Git como armazenamento de dados Armazenamento de Arquivos, porém com recursos de versionamento, etc Exemplos: Content Management System, Document Management, Portal, etc Chave/valor Estrutura flexível para armazenamento de chave/valor, com recursos de versionamento Outras opções serão variações sobre essas opções
  • #9: Praticamente para todas as linguagens. Eu uso JGit para Java, que é mais que uma lib, é uma implementação complete do git em java. Libgit2, e binds para várias linguagens.
  • #10: Transação: commit forward only, se falhar, `rollback` -> Muitas alterações, usa uma branch, faz todas as alterações, e tenta fazer merge, se falhar: rollback. Réplica: Git post-commit hook Performance: tome cuidado com muito conteúdo em uma única árvore, e repos grandes são mais lentos. Commits por Segundo também não é muito rápido, toda operação vai no disco
  • #11: Utilizamos o git como forma de armazenamento de dados (6+ anos) - Primeiro
  • #12: Resultado: - Basta escrever tudo em arquivos - Teste unitário vc pode escrever no disco mesmo - Mapeamento quase completo em relação as funcionalidades do Git - Padrão, ninguém precisa aprender nada - E de graça…. Ainda resolvemos…
  • #14: Vc já se perguntou como Git funciona por baixo dos panos? Bom vamos começar por aqui, pois antes de eu falar sobre como vc pode usar e como eu uso Git como meu NOSQL nos últimos 6 anos, eh fundamenta vc entender como ele funciona
  • #15: Para os antigos usuários de Subversion, usar Git mudou a vida, pois branches e etc, passaram a ser utilizáveis… o Git era quase mágico de tão rápido para mudar branches. Early days do subversion armazenava reverse deltas, e tinha que computar os diffs. (Isso já mudou um bocado, mas talvez tarde demais). Git é diferente, é mais ou menos assim que os dados são armazenados.
  • #16: Então vamos começar pelo começo… o Repositório. Primeira coisa para entender: Bare e Working Tree Working Tree é a forma de você interagir com o Git de modo facilitado Bare: Bare é um repositório que você não tem o working tree Pq isso é importante? Pq se você quiser usar o git como nosql, vc provavelmente irá manipular diretamente as estruturas de dados, sem usar um Working Tree
  • #17: (retirado da documentação official) Ótimo! Mas o que isso significa? Significa que o core do Git é simplesmente um banco de dados chave-valor.
  • #18: Os dados no Git são armazenados como objetos. Para interagir diretamente com os objetos, vamos usar os commandos chamados plumbing!! Sim… existem dois tipos de comandos no Git: Porcelain e Plumbing. Porcelains são os que usamos inicialmente no 101: git add, git commit, git checkout, git branch
  • #19: echo 'hello' | git hash-object –stdin (não escreve) Cria um 40-character checksum hash do conteúdo, neste caso a palavra “hello” (write)
  • #20: Read content! E COM ISSO: Você já conhece o suficiente para pode usar Git como um K/V Store Ainda tem mais… vamos agora entender um pouco sobre tipos de objetos.
  • #21: Este commando retorna o tipo do Objeto! Sim, existe mais de um objeto… o que manipulamos até agora é o BLOB!
  • #22: 100644: arquivo normal 100755: arquivo executável 120000: link simbólico Essa estrutura fque estamos montando, é armazenada temporáriamente no index Interessante: path/ile.txt
  • #23: Mostrar dados que estão no index
  • #24: find objects -type f git cat-file {hash} -t
  • #26: Criando um commit
  • #28: Criando um commit seguido de outro commit!
  • #29: Visualizando um commit
  • #30: ERROR!!! fatal: your current branch 'master' does not have any commits yet
  • #31: WTF?!
  • #32: master branch é default, mas como é um repositório bare… e estamos manipulando ele diretamente…precisamos setar para onde o refs/head/master está apontado (commit hash)
  • #33: Agora funciona!
  • #34: Create a branch_name!!
  • #35: ref: refs/heads/master
  • #36: Apontando HEAD para a branch test
  • #37: THX!