File:  [NetBSD Developer Wiki] / wikisrc / gitsofar.mdwn
Revision 1.4: download - view: text, annotated - select for diffs
Mon Feb 16 01:44:18 2015 UTC (8 years, 9 months ago) by mspo
Branches: MAIN
CVS tags: HEAD
a few updates on git

## NetBSD with git so far

[core statement on vcs](http://mail-index.netbsd.org/tech-repository/2015/01/04/msg000497.html)

### Low memory hosts:

* [tuning for git on low memory](http://mail-index.netbsd.org/tech-repository/2015/01/08/msg000520.html)

git appears to have slightly different memory characteristics depending on the
protocol used.  Over http I am able to get a full clone with all history on a
256 + 256 raspberri pi.  If you bump up the memory to 512 + 256 it makes ssh
possible, which means writes are possible.

The link above has some tuning I used to get memory requirements way down.

It should be noted that git support a "shallow" clone (--depth 1) which ignores
most history but allows commits and full development.
A shallow clone works on very small systems; I would guess 128MB + a little swap
is enough.

git is slow during 'status' by default since it searches the entire tree for a
change.  It will produce a warning with tunable options if the command runs
slowly.

** Update
After some complaining on the git@ mailing list a patch has been produced which
drops the memory requirements down quite a bit.  I can now, without much tuning,
work on my 512 system.  I'm pretty sure a 256 + swap without any special tuning
would also work.

### CVS in parallel

I do not think this is a good idea and do not plan to advocate for it.
Git does have a cvs server built-in but I have not taken the time to set it up
for testing because it is slightly involved and I don't see the purpose.

### Conversion

One-shot to create the new True Source.  I don't think there will be many cvs
hold-outs.

See above for CVS server provided if ongoing conversion is really desired.

### existing cvs dependencies

TBD

### How should NetBSD be setup

High level- private box for write master using ssh, any number of additional
systems with read-only mirrors over http:// and git://

Also see a great description of how DragonflyBSD is setup:<br>
[dfbsd server setup](http://lists.dragonflybsd.org/pipermail/users/2015-January/207421.html)<br>
[dfbsd workflows](http://lists.dragonflybsd.org/pipermail/users/2015-January/207422.html)<br>
[dfbsd config](http://lists.dragonflybsd.org/pipermail/users/2015-January/207424.html)<br>

### how to install

git should fit into NetBSD src/tools easily.  I have not personally tested
cross compilation.

### workflows

See DragonflyBSD examples given above

There are many many workflows supported in git.  For the most part I think
NetBSD developers would follow the "feature branch" workflow from the main repo
(or private/semi-private clones before merge).

Public collaboration is a big feature of git since it can format patches into
at least two different email formats and they can be submitted to a bug report
or to a mailing list, which should allow clean apply.

A non-developer could also post a pull request to github or host his git repo
for a friendly developer to add as an origin and pull his branch.

(git origin add future-developer http://example.com/~greatguy/src.git)


### log message formats

Try to references named branches/tags instead of sha-1's
Also using the dates for commits instead of commit id's

### how to convert

ESR?

### No lock-in

I am unable to anticipate the next generation of SCM.
Don't do anything weird like change history and we should be fine.

Maybe when we have 30 years of project history it will be time to consider
restructuring the project.  :)

---

I think this is less a function of the tool and more a function of the project not
allowing non-"standard" actions.

### Who, When, and How Long?

* ESR/Joerg - convert
* sometime, eventually, maybe
* assumptions/proposal:

Assuming conversion starting from date(x) to freeze(y) is relatively easy, the
refinements of Joerg/ESR conversion can continue to run in read-only mode as they
do today.  This means the "switch" is a few hours only for:

** cvs goes read only
** history from last git conversion pull until now is appended
** cvs is turned off
** git is made available over ssh

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb