summaryrefslogtreecommitdiff
path: root/README.md
blob: 30a079639a98324719d35a30cc9d4ee6308fab81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# forge

forge is a GUI front end for 'git' designed with the
intent of simplifying federated git development.

## Install:

* go install go.wit.com/apps/forge@latest

## Theory

* Software engineering is the art of making things work.
* Release engineering is the art of making things perfect.

## Rules

1) forge is only a GUI and wrapper around 'git'
2) forge _only_ os.Exec()'s git. Anything forge does
    can be done on the command line using 'git' directly
3) forge's default behavior is to use 3 branches:
    a) The git upstream master/main branch
    b) A "devel" branch that is published
    c) a "user" branch that can be local only to the developer
4) although 'master' usage is frowned upon, it's used here because 'main'
   is already a reserved word in GO and this program has to also know
   about 'main' in the context of C and GO language constructs.

## Development Goals

* have a GUI that also works on the command line

## Notes

This can be used to maintain git repositories
expiremental work on federated git

* Scans directories looking for git repositories
* The default behavior is to use 3 branches. 'master or main', 'devel', '<username>'
* shows tags and dirty state
* uses a GUI or the console(console display needs work)
* always wrap around 'git' -- it basically just types 'git' commands really fast

## building from sources

```
# note as of Feb 2025. Forge has an option in forge to build itself.
# The instructions below are out of date, but provide the general idea.
# accurate instructions are in the forge code itself

go install go.wit.com/apps/go-clone@latest      # this tool makes it easier to 'git clone' repos and recursively 'git clone' the dependancies
go install go.wit.com/apps/autogenpb@latest     # this tool will generate the protobuf *pb.go files (also Marshal(), Sort(), etc.)

go-clone go.wit.com/apps/forge                  # this will 'git clone' about 20 repos into ~/go/src (or where your go.work file is)

cd go.wit.com/lib/protobuf/forgepb
make                                            # autogenpb will make .pb.go, marshal.pb.go and sort.pb.go files
cd go.wit.com/lib/protobuf/gitpb
make                                            # autogenpb will make .pb.go, marshal.pb.go and sort.pb.go files

cd go.wit.com/apps/forge
make                        # this runs GO111MODULE=off go build insuring that your using only your git sources

```

## Debian packages:

Instructions are on https://mirrors.wit.com/

## possible 'git bug' integration ideas:

```
git pull origin +refs/bugs/\*:refs/bugs/\*
git pull origin +refs/identities/\*:refs/identities/\*


# remove the caches
rm -rf .git/git-bug


# rebuild the cache with any command
git bug user
```