File:  [NetBSD Developer Wiki] / wikisrc / gitsofar.mdwn
Revision 1.9: download - view: text, annotated - select for diffs
Mon Sep 2 19:29:52 2019 UTC (12 months, 4 weeks ago) by cnst
Branches: MAIN
CVS tags: HEAD
gitsofar: add two wiki-links and a EuroBSDcon 2011 paper (to have everything in same place)

    1: ## NetBSD with git so far
    2: 
    3: * [[mailing-lists/tech-repository]]
    4: * [[projects/project/cvs-migration]]
    5: * [2011-10: Fossilizing NetBSD: The road to modern version control](https://2011.eurobsdcon.org/papers/sonnenberger/fossilizing.pdf)
    6: * [2015-01: Core statement on version control systems](http://mail-index.netbsd.org/tech-repository/2015/01/04/msg000497.html)
    7: * [2017-06: New home for the repository conversion](http://mail-index.netbsd.org/tech-repository/2017/06/10/msg000637.html)
    8: * [2017-09: pkgsrc Commit Message Policy](http://mail-index.netbsd.org/pkgsrc-users/2017/09/12/msg025574.html)
    9: * [GitHub.com/NetBSD](https://github.com/NetBSD)
   10: 
   11: ### Low memory hosts:
   12: 
   13: * [tuning for git on low memory](http://mail-index.netbsd.org/tech-repository/2015/01/08/msg000520.html)
   14: 
   15: git appears to have slightly different memory characteristics depending on the
   16: protocol used.  Over http I am able to get a full clone with all history on a
   17: 256 + 256 raspberri pi.  If you bump up the memory to 512 + 256 it makes ssh
   18: possible, which means writes are possible.
   19: 
   20: The link above has some tuning I used to get memory requirements way down.
   21: 
   22: It should be noted that git support a "shallow" clone (--depth 1) which ignores
   23: most history but allows commits and full development.
   24: A shallow clone works on very small systems; I would guess 128MB + a little swap
   25: is enough.
   26: 
   27: git is slow during 'status' by default since it searches the entire tree for a
   28: change.  It will produce a warning with tunable options if the command runs
   29: slowly.
   30: 
   31: *Update*
   32: 
   33: After some complaining on the git@ mailing list a patch has been produced which
   34: drops the memory requirements down quite a bit.  I can now, without much tuning,
   35: work on my 512 system.
   36: 
   37: ### CVS in parallel
   38: 
   39: I do not think this is a good idea and do not plan to advocate for it.
   40: Git does have a cvs server built-in but I have not taken the time to set it up
   41: for testing because it is slightly involved and I don't see the purpose.
   42: 
   43: ### Conversion
   44: 
   45: One-shot to create the new True Source.  I don't think there will be many cvs
   46: hold-outs.
   47: 
   48: See above for CVS server provided if ongoing conversion is really desired.
   49: 
   50: ### existing cvs dependencies
   51: 
   52: is there a list of these?  build systems?
   53: The entire build infrastructure of NetBSD should (even without giti) change into a "jobs"-oriented workflow instead of a "server"-oriented workflow.
   54: 
   55: Very recent (summer 2017) events have shown that the ability to move things around is very important.
   56: 
   57: 
   58: ### How should NetBSD be setup
   59: 
   60: High level- private box for write master using ssh, any number of additional
   61: systems with read-only mirrors over http:// and git://
   62: 
   63: Also see a great description of how DragonflyBSD is setup:<br>
   64: [dfbsd server setup](http://lists.dragonflybsd.org/pipermail/users/2015-January/207421.html)<br>
   65: [dfbsd workflows](http://lists.dragonflybsd.org/pipermail/users/2015-January/207422.html)<br>
   66: [dfbsd config](http://lists.dragonflybsd.org/pipermail/users/2015-January/207424.html)<br>
   67: 
   68: [In 2019, FreeBSD core team has appointed a WG to explore transition from Subversion to Git.](https://www.freebsd.org/news/status/report-2019-04-2019-06.html#FreeBSD-Core-Team)
   69: 
   70: ### how to install
   71: 
   72: git should fit into NetBSD src/tools easily.  I have not personally tested
   73: cross compilation.
   74: 
   75: ### workflows
   76: 
   77: See DragonflyBSD examples given above
   78: 
   79: There are many many workflows supported in git.  For the most part I think
   80: NetBSD developers would follow the "feature branch" workflow from the main repo
   81: (or private/semi-private clones before merge).
   82: 
   83: Public collaboration is a big feature of git since it can format patches into
   84: at least two different email formats and they can be submitted to a bug report
   85: or to a mailing list, which should allow clean apply.
   86: 
   87: A non-developer could also post a pull request to github or host his git repo
   88: for a friendly developer to add as an origin and pull his branch.
   89: 
   90: (git origin add future-developer http://example.com/~greatguy/src.git)
   91: 
   92: 
   93: ### log message formats
   94: 
   95: Try to references named branches/tags instead of sha-1's
   96: Also using the dates for commits instead of commit id's
   97: 
   98: ### how to convert
   99: 
  100: https://github.com/netbsd/
  101: 
  102: ### No lock-in
  103: 
  104: I am unable to anticipate the next generation of SCM.
  105: Don't do anything weird like change history and we should be fine.
  106: 
  107: Maybe when we have 30 years of project history it will be time to consider
  108: restructuring the project.  :)
  109: 
  110: git is the most widely used VCS ever so it has the best chance of conversion tools existing.
  111: No future tool will be able to exist without a git-conversion script.
  112: 
  113: ---
  114: 
  115: I think this is less a function of the tool and more a function of the project not
  116: allowing non-"standard" actions.
  117: 
  118: ### Who, When, and How Long?
  119: 
  120: * ESR/IIJ/Joerg - convert
  121: * sometime, eventually, maybe
  122: * assumptions/proposal:
  123: 
  124: Assuming conversion starting from date(x) to freeze(y) is relatively easy, the
  125: refinements of Joerg/ESR conversion can continue to run in read-only mode as they
  126: do today.  This means the "switch" is a few hours only for:
  127: 
  128: 1. cvs goes read only
  129: 2. history from last git conversion pull until now is appended
  130: 3. cvs is turned off
  131: 4. git is made available over ssh
  132: 

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