Controles de Integracao Git NEW
O HarbourBuilder inclui integracao Git completa — 10 componentes e suporte abrangente no IDE para controle de versao. Sem ferramentas externas necessarias; gerencie seus repositorios diretamente do IDE.
O HarbourBuilder envolve a CLI do git via CreateProcess com captura de stdout,
proporcionando uma experiencia de Source Control no estilo VS Code dentro do IDE.
Componentes Git
| Componente | CT ID | Descricao |
|---|---|---|
TGitRepo | 121 | Inicializacao de repositorio, clonagem e status |
TGitCommit | 122 | Commit de alteracoes com mensagens e selecao de arquivos |
TGitBranch | 123 | Criacao, troca e listagem de branches |
TGitLog | 124 | Visualizar historico de commits com autor, data e mensagem |
TGitDiff | 125 | Visualizar diferencas e alteracoes em arquivos |
TGitRemote | 126 | Gerenciar repositorios remotos (adicionar, remover, listar) |
TGitStash | 127 | Guardar e restaurar alteracoes do diretorio de trabalho |
TGitTag | 128 | Criar, listar e excluir tags |
TGitBlame | 129 | Informacao de autor linha por linha (annotate) |
TGitMerge | 130 | Mesclar branches e resolver conflitos |
Integracao Git no IDE
Painel de Controle de Codigo Fonte
Acesse via menu Git > Status. O painel mostra:
- Rotulo do branch — Nome do branch atual
- ListView de alteracoes — Alteracoes staged e unstaged
- Editor de mensagem de commit — Entrada de texto multi-linha
- Botoes de acao — Refresh, Commit, Push, Pull, Stash
O painel usa um estilo escuro que corresponde a visao Source Control do VS Code.
Menu Git (17 Itens)
| Item de Menu | Acao |
|---|---|
| Init | Inicializar um novo repositorio Git |
| Clone | Clonar um repositorio remoto existente |
| Status | Abrir painel de Controle de Codigo Fonte |
| Commit | Commit das alteracoes staged |
| Push | Enviar commits para o remoto |
| Pull | Baixar atualizacoes do remoto |
| Branch > Create | Criar um novo branch |
| Branch > Switch | Trocar para outro branch (com dialogo de lista) |
| Branch > Merge | Mesclar um branch no atual |
| Stash > Save | Guardar alteracoes do diretorio de trabalho |
| Stash > Pop | Restaurar alteracoes guardadas |
| Log | Visualizar historico de commits |
| Diff | Visualizar diferencas entre arquivos |
| Blame | Visualizar autoria linha por linha |
Funcoes de Backend
11 funcoes de backend envolvem a CLI do git.exe via CreateProcess com captura de stdout:
| Funcao | Comando Git | Formato de Retorno |
|---|---|---|
GIT_Status() | git status --porcelain | { { cStatus, cFile }, ... } |
GIT_Log() | git log --format=... | { { cHash, cAuthor, cDate, cMsg }, ... } |
GIT_Diff() | git diff | String diff unificada |
GIT_Blame() | git blame | { { nLine, cHash, cAuthor, cText }, ... } |
GIT_CurrentBranch() | git branch --show-current | String do nome do branch |
GIT_BranchList() | git branch | { { cName, lCurrent }, ... } |
GIT_Exec() | Qualquer comando git | String stdout capturada |
GIT_IsRepo() | git rev-parse | Logico (.T./.F.) |
GIT_RemoteList() | git remote -v | { { cName, cURL }, ... } |
GIT_StashList() | git stash list | { { cStash, cMsg }, ... } |
Exemplos de Codigo
Inicializar um Repositorio
local oRepo oRepo := TGitRepo:New() if ! GIT_IsRepo( "C:\MeuProjeto" ) GIT_Exec( "git init C:\MeuProjeto" ) MsgInfo( "Repositorio inicializado" ) endif
Visualizar Status e Commit
local aStatus, cMsg aStatus := GIT_Status() for each aFile in aStatus ? aFile[1], aFile[2] // Codigo de status e nome do arquivo next GIT_Exec( "git add ." ) GIT_Exec( "git commit -m \"Commit inicial\"" )
Operacoes com Branch
local aBranches // Listar todos os branches aBranches := GIT_BranchList() for each aBranch in aBranches ? aBranch[1], if( aBranch[2], "* atual", "" ) next // Criar e trocar para novo branch GIT_Exec( "git checkout -b feature/nova-funcionalidade" )
Visualizar Log de Commits
local aLog aLog := GIT_Log( 20 ) // Ultimos 20 commits for each aCommit in aLog ? aCommit[1] // Hash ? aCommit[2] // Autor ? aCommit[3] // Data ? aCommit[4] // Mensagem next
Blame em um Arquivo
local aBlame aBlame := GIT_Blame( "source/main.prg" ) for each aLine in aBlame ? "Linha", aLine[1], "por", aLine[3], ":", aLine[4] next
Troca de Branches
Ao trocar de branches via Git > Branch > Switch, um dialogo de lista mostra todos os branches disponiveis. Selecione o branch alvo e clique em OK. O IDE ira:
- Verificar se ha alteracoes nao commitadas
- Pedir para fazer stash se houver alteracoes
- Executar
git checkout <branch> - Recarregar o projeto se os arquivos mudaram
A integracao Git do HarbourBuilder requer que o git esteja instalado e no PATH do sistema.
Baixe em git-scm.com.
Fluxos de Trabalho Git Comuns
Configuracao Inicial
// 1. Inicializar repositorio GIT_Exec( "git init" ) // 2. Adicionar remoto GIT_Exec( "git remote add origin https://github.com/usuario/repo.git" ) // 3. Adicionar todos os arquivos GIT_Exec( "git add ." ) // 4. Commit GIT_Exec( "git commit -m \"Commit inicial\"" ) // 5. Push para o remoto GIT_Exec( "git push -u origin master" )
Fluxo de Trabalho Diario
// 1. Baixar ultimas alteracoes GIT_Exec( "git pull" ) // 2. Fazer alteracoes no IDE... // 3. Verificar status aStatus := GIT_Status() // 4. Stage e commit GIT_Exec( "git add ." ) GIT_Exec( "git commit -m \"Adicionar funcionalidade X\"" ) // 5. Push para o remoto GIT_Exec( "git push" )