MCPcopy Create free account
hub / github.com/diillson/chatcli / GetGitInfo

Function GetGitInfo

utils/git_utils.go:15–98  ·  view source on GitHub ↗

GetGitInfo agora aceita um CommandExecutor.

(executor CommandExecutor)

Source from the content-addressed store, hash-verified

13
14// GetGitInfo agora aceita um CommandExecutor.
15func GetGitInfo(executor CommandExecutor) (string, error) {
16 // Verificar se estamos dentro de um repositório Git
17 if err := executor.Run("git", "rev-parse", "--is-inside-work-tree"); err != nil {
18 return "", fmt.Errorf("não é um repositório Git")
19 }
20
21 var gitData strings.Builder
22
23 // Obter informações do repositório remoto
24 remoteOut, err := executor.Output("git", "remote", "-v")
25 if err == nil {
26 gitData.WriteString("Repositórios Remotos:\n")
27 gitData.WriteString(string(remoteOut))
28 gitData.WriteString("\n")
29 }
30
31 // Obter branch atual
32 currentBranchOut, err := executor.Output("git", "branch", "--show-current")
33 if err == nil {
34 gitData.WriteString("Branch Atual: ")
35 gitData.WriteString(string(currentBranchOut))
36 gitData.WriteString("\n")
37 }
38
39 // Obter status detalhado
40 statusOut, err := executor.Output("git", "status", "-s", "-b")
41 if err == nil {
42 gitData.WriteString("\nStatus Resumido:\n")
43 gitData.WriteString(string(statusOut))
44 gitData.WriteString("\n")
45 }
46
47 // Obter arquivos modificados com diferenças
48 diffOut, err := executor.Output("git", "diff", "--stat")
49 if err == nil {
50 gitData.WriteString("\nArquivos Modificados (estatísticas):\n")
51 gitData.WriteString(string(diffOut))
52 }
53
54 // Obter diferenças detalhadas
55 diffDetailedOut, err := executor.Output("git", "diff")
56 if err == nil {
57 gitData.WriteString("\nDiferenças Detalhadas:\n")
58 gitData.WriteString(string(diffDetailedOut))
59 }
60
61 // Obter arquivos não rastreados
62 untrackedOut, err := executor.Output("git", "ls-files", "--others", "--exclude-standard")
63 if err == nil {
64 gitData.WriteString("\nArquivos Não Rastreados:\n")
65 gitData.WriteString(string(untrackedOut))
66 }
67
68 // Obter log mais detalhado
69 logOut, err := executor.Output("git", "log", "-5", "--pretty=format:%h - %an, %ar : %s")
70 if err == nil {
71 gitData.WriteString("\nÚltimos 5 Commits:\n")
72 gitData.WriteString(string(logOut))

Callers 3

processGitCommandMethod · 0.92
TestGetGitInfo_InRepoFunction · 0.85
TestGetGitInfo_NotInRepoFunction · 0.85

Calls 4

ErrorfMethod · 0.80
RunMethod · 0.65
OutputMethod · 0.65
StringMethod · 0.45

Tested by 2

TestGetGitInfo_InRepoFunction · 0.68
TestGetGitInfo_NotInRepoFunction · 0.68