Página 1 de 1

Baixando do source-forge usando git

Enviado: 20 Fev 2021 17:56
por JoséQuintas
Requer um pouco de conhecimento e paciência mas....

Bom...
vai ser uma pasta com source-forge e git ao mesmo tempo.
A ordem não faz diferença, mas as duas coisas precisam ser feitas.

1) Se criar como git
crie alguma alteração/commit, salve.
depois, por exemplo
git svn init https://svn.code.sf.net/p/hwgui/code/trunk/hwgui

ou

2) git svn clone https://svn.code.sf.net/p/hwgui/code/trunk/hwgui
E o anterior

A primeira vez é a mais demorada.
Atenção ao número de commit, vai precisar dele depois pra facilitar.
Mesmo se interromper o download, sem problemas, pode usar o número pra continuação.

Código: Selecionar todos

d:\temp>git init hwgui
Initialized empty Git repository in D:/temp/hwgui/.git/

d:\temp>cd hwgui

d:\temp\hwgui>git svn init https://svn.code.sf.net/p/hwgui/code/trunk/hwgui

d:\temp\hwgui>git svn fetch
        A       source/hownbtn.prg
        A       license.txt
        A       makefile.bc
        A       source/htimer.prg
        A       source/hfrmtmpl.prg
        A       source/qhtm/hwg_qhtm.c
        A       source/qhtm/hqhtm.prg
        A       source/Makefile
        A       source/hcontrol.prg
        A       source/shellapi.c
        A       source/errorsys.prg
        A       source/procmisc/arr2str.c
        A       source/procmisc/procs7.prg
        A       source/procmisc/procini.prg
        A       source/prnalone.c
        A       source/drawtext.c
        A       source/hradio.prg
        A       source/freeimg.c
        A       source/media_c.c
        A       source/hsplit.prg
        A       source/hpanel.prg
        A       source/hbrowse.prg
        A       source/htab.prg
        A       source/hupdown.prg
        A       source/richedit.c
        A       source/hcheck.prg
        A       source/procmisc/procscri.prg
        A       source/procmisc/Makefile
        A       source/procmisc/blowfish.c
        A       source/dialog.c
        A       source/guimain.prg
        A       include/repmain.h
        A       include/freeimage.h
        A       source/commond.c
        A       include/guilib.ch
        A       include/guilib.h
        A       samples/viewer/bld_view.bat
        A       include/hwg_qhtm.ch
        A       makefile.vc
        A       samples/bldvc.bat
        A       samples/bldgw.bat
        A       samples/viewer/viewer.rc
        A       samples/mysql/userprn.rpt
        A       source/hprinter.prg
        A       source/repexec.prg
        A       source/hedit.prg
        A       source/menu_c.c
        A       source/hsayimg.prg
        A       source/menu.prg
        A       source/hriched.prg
        A       source/hcombo.prg
        A       samples/viewer/viewer.prg
        A       samples/mysql/userprn.scr
        A       samples/mysql/hwmysql.prg
        A       samples/mysql/bldwin.bat
        A       make_b32.bat
        A       samples/mysql/hwmysql.h
        A       doc/funclist.txt
        A       .ssh/known_hosts
        A       .ssh/random_seed
        A       whatsnew.txt
        A       source/hdialog.prg
        A       source/drawwidg.prg
        A       source/control.c
        A       source/wprint.c
        A       source/message.c
        A       source/hdatepic.prg
        A       source/qhtm/qhtm.h
        A       source/qhtm/Makefile
        A       source/draw.c
        A       source/hprogres.prg
        A       source/window.c
        A       source/htree.prg
        A       source/hgraph.prg
        A       source/hwindow.prg
        A       source/hfreeimg.prg
        A       samples/mysql/hwmysql.rc
        A       doc/author.jpg
        A       make_vc.bat
        A       Makefile
        A       include/windows.ch
        A       install.txt
        A       samples/viewer/bldgw.bat
        A       samples/mysql/demo.ini
        A       samples/mysql/dbfmysql.scr
        A       samples/bld.bat
        A       makefile.gcc
        A       makemngw.bat
r3 = 74a72d10d9921ffc2f7d48a2991c87f3a08cdb90 (refs/remotes/git-svn)
        M       .ssh/random_seed
        A       source/misc.c
r4 = e1612c48aa64e7ae41934827b9cfeae72c2eff4a (refs/remotes/git-svn)
        M       include/guilib.ch
        M       makefile.bc
        M       source/hdialog.prg
        M       source/Makefile
        M       source/htab.prg
        M       .ssh/random_seed
        M       makefile.vc
        M       source/dialog.c
        M       source/message.c
        M       source/window.c
        M       source/hwindow.prg
        M       include/windows.ch
        A       Changelog
        M       source/hedit.prg
        M       source/hdatepic.prg
        M       source/hbrowse.prg
        M       makefile.gcc
r5 = 353d62e5d6160fbb8192326790a6a346fa41f878 (refs/remotes/git-svn)

d:\temp\hwgui>copy con x.txt

^Z
        1 arquivo(s) copiado(s).

d:\temp\hwgui>
criei um arquivo na pasta x.txt
vou precisar dele depois.

Baixando do source-forge usando git

Enviado: 20 Fev 2021 18:08
por JoséQuintas
sf1.png
sf2.png
Essa seria a operação normal do dia a dia, clica no arquivo encima, pra ele ir pra baixo - isso vai ser a alteração a ser salva.
E clica no commit pra salvar.

Baixando do source-forge usando git

Enviado: 20 Fev 2021 18:11
por JoséQuintas
sf1.png
sf2.png
sf2.png (9.04 KiB) Exibido 1271 vezes
Mesmo que salve o source-forge inteiro, só depois de um commit é que essa parte fica visível.

Note dois "branches", um é o Main (x.txt), e o outro é o source-forge com hwgui.
Eles não tem ligação, são dois controles separados.

Baixando do source-forge usando git

Enviado: 20 Fev 2021 18:15
por JoséQuintas
sf1.png
Agora na última alteração da hwgui, é clique da direita, e selecionar esse "reset main branch to here", e "hard reset...".
Nesse instante, a sua main do git passou a ser a posição do source-forge com todas as atualizações.
Se tiver criado no github, vai ficar no github também.

Baixando do source-forge usando git

Enviado: 20 Fev 2021 18:18
por JoséQuintas
Ah sim... eu interrompi o git svn fetch.
Vai ter que fazer até o fim, e fazer o "reset main" no último commit.
Isso é muito demorado... mas fazer o que....

Baixando do source-forge usando git

Enviado: 20 Fev 2021 18:22
por JoséQuintas
Isso é só na primeira vez, pra baixar tudo no source-forge.
Mas se não for fazer acompanhamento, não precisa fazer completo.

A parte do source-forge NÃO é salva pelo git.
Se fosse fazer o fetch de novo, seria feito desde o primeiro, toda aquela longa demora.

É aí que entra uma opção que eu descobri depois: dá pra pegar a partir de determinada alteração.

git svn fetch -r2900:HEAD

Hoje está perto de 2940, então isso baixaria somente as últimas 40 alterações.
Sempre o conteúdo final completo, mas somente o histórico de 40 alterações.

Isso é bom pra quem não quer todo histórico, ou pra futuras atualizações.

Baixando do source-forge usando git

Enviado: 20 Fev 2021 18:30
por JoséQuintas
sf1.png
No dia a dia depois, não muda muito.
Vão ser sempre dois branches (como duas versões).
o git svn fetch a partir de determinado número de alteração.

É ir na lista do source-forge, em cada alteração que ainda não está no git, e selecionar "cherry-pick this commit" em cada nova alteração.
No normal é no máximo uma por dia, ou uma por semana, então sem problemas.

Isso é interessante, porque quando você quer reescrever um histórico, acaba usando a mesma opção, dependendo de como reescrever.

Isso significa o seguinte: nos fontes atuais, será aplicada essa mesma alteração que foi feita no source-forge.

Se apenas está acompanhando o andamento do projeto para por aí.

Baixando do source-forge usando git

Enviado: 20 Fev 2021 18:42
por JoséQuintas
Agora outra parte interessante: aquele RESET MAIN TO HERE.

Isso modifica todos os fontes da sua pasta, para aquela exata posição de alterações.

Pra que serve?
No caso da hwgui, que mostrei, você está avançando os fontes pras novas alterações.
Mesmo na HWGUI, ou Harbour, ou fontes próprios, você poderia voltar a uma situação de um mês atrás, por exemplo.

MUITO CUIDADO com isso.
Você não perde nada, depois é só voltar pra situação atual, do mesmo modo.
Mas.....
Se você começar a alterar, vai estar criando uma nova versão dos seus próprios fontes, porque vai estar mexendo numa versão antiga.
O histórico acaba se dividindo em dois: o futuro anterior, e o novo futuro com as novas mexidas.

Confunde, mas não muito.
Você tinha os fontes de 31/12/2020, e tudo que foi alterado a partir de lá.
Se você reseta pra 31/12/2020, é você na máquina do tempo, voltando ao passado.
Se alterou o que fez dia 31/12/2020, está criando um novo futuro, não vai ser mais o mesmo de antes.

A partir daí, fica muito doido, porque a "máquina do tempo" está em suas mãos.
Pode desfazer o que fez, pode misturar passado e futuro, etc.
Pode escolher o que acontece com cada alteração que foi feita.

Então... acaba sendo legal mexer com isso de hwgui e outros, porque está treinando o que pode fazer com os próprios fontes.

No caso de hwgui, harbour, etc., se fizer besteira, é só apagar tudo e baixar tudo de novo.
Então é um ótimo treino.

Já com seus próprios fontes.... aí não pode ficar brincando não... tem que saber o que está fazendo.