Quando falamos em Fork,
logo lembramos de um garfo, um utensílio de cozinha que contém uma haste que no final se separa
em três hastes, certo?
De maneira geral, um Fork representa uma
cópia de um determinado repositório para outro, permitindo que os usuários
experimentem alterações em um determinado projeto.
Mas daí você se pergunta: “Porque
alguém faria uma cópia de um determinado projeto no GitHub?”.
São diversos os motivos:
+ Usar o projeto de outra pessoa, como ponto de partida
para sua própria ideia.
+ Quando você deseja propor alterações no repositório
principal ao mesmo tempo que você não tem acesso ao mesmo.
Mas daí você pode pensar: “Se eu
quiser usar um determinado repositório como ponto de partida para minha própria ideia, basta
criar meu próprio repositório, e usar somente os arquivos que eu preciso daqueles
repositórios que não são meus, não é verdade?”.
Sim, isso é uma ideia totalmente plausível de acontecer, pois pra que
fazer uma cópia de um repositório existente,
dizendo a todos que meu projeto é uma “cópia”, se eu não posso simplesmente criar meu próprio
repositório que contenha alguns arquivos de outros? Não é verdade?
Ou quem sabe pensar: “Se eu quiser
propor alterações em um repositório existente, basta eu conversar com algum dos
contribuidores e tentar pedir acesso ao repositório. E mesmo se mesmo assim não me derem
acesso, posso simplesmente criar uma nova Issue…”.
Sim, isso também é verdade!
Podemos dizer também que podemos criar um fork quando não temos permissões de push para o repositório do GitHub de
alguém.
Bem, se tudo isso aí é uma grande verdade, podemos resumir (em outras
palavras) que fazemos um Fork quando:
1) Encontramos um repositório interessante, mas com pontos que
‘achamos’ que podem ser melhorados, ao mesmo tempo que não temos acesso ao push, e que a nossa
mão está coçando para realizar essas melhorias de tal modo que já queremos fazer push para
ontem. Em casos como esses executamos um Fork.
2) Encontramos um repositório interessante, com pontos que ‘achamos’
que podem ser melhorados, ao mesmo tempo que não te deixam fazer parte do projeto, ou não
consideram suas alterações relevantes. Em casos como esses executamos um Fork.
3) Encontramos um repositório interessante, mas tão antigo, que
parece que o criador o abandonou de vez, e como queremos ressuscitá-lo, podemos fazer um Fork.
Se tratando do item 3, podemos dizer então que um FORK, nada mais é
do que uma prática do estilo “Reinventar a Roda”?
Sim, podemos dizer que sim.
Existem aqueles que criam um Fork de seus antigos projetos porque
perderam o acesso a sua antiga conta do GitHub, ao mesmo tempo que existem aqueles que também
criam um Fork dos seus próprios projetos para representar e dizer aos outros que a ideia tomou
novos rumos (famosa “pivotagem” do mundo do
empreendedorismo).
É importante ressaltar que toda vez que fazemos uma cópia de um
determinado repositório (Fork), tanto o repositório original quanto a cópia são assíncronos, ou
seja, as atualizações acontecem de forma independente (e não automática).
Nesse caso, se o repositório original sofrer alguma atualização
(receber novos commits), tal operação não vai refletir no repositório de cópia.