Github.hpp File Reference

Plans and todos for accessing and maintaining the OKlibrary via "Github". More...

Go to the source code of this file.

Detailed Description

Plans and todos for accessing and maintaining the OKlibrary via "Github".

General usage strategy : DONE (we only use Github, no own server)
  • Created the central OKlibrary repository at
    (this is the "public" clone/pull/fetch URL).
  • My (OK's) direct connection (where I can also push) is via
    url = git@github.com:OKullmann/oklibrary.git
    (copied from .git/config).
  • DONE Since everybody can pull from the *public github repository* (to introduce a notion here), it seems that the packages should be created such that the "pull" automatically pulls from this repository.
  • DONE So likely the current http-accessible repository (on cs-svr1) should be abandoned.
  • However, for the core developer group, pushs and pulls should go to the local central server (cs-oksvr), and only in emergencies (like currently) does work happen via github.
  • That is, normally only OK pushs to github, while everybody might pull from there.
Github terminology and features
  • A given user (i.e. OKullmann) may "follow" another user (i.e. MLewsey), in which case, all activity (commits, new repositories, follows etc) of MLewsey is reported on OKullmann's "News Feed".
  • A given user also may "watch" a repository. This is analogous to "following" a user, but now all activity (commits etc) of the respository* is reported on the user's "News Feed".
  • Github has a "group" on Google Groups. While this is not a pure mailing list, the same functionality is available, by joining the group and then selecting to read the group by email. Emails can then be sent to the group at "github@googlegroups.com", just like a mailing list, and any responses are received by email.
Collaborative work on github
  • Basically, collaboration happens as follows:
    1. In order to submit, the developer must have an account at http://github.com/.
    2. Similar to "OKullmann", this account name should be, e.g. "MHenderson" or "MGwynne".
    3. Care should be taken that the e-mail address registered at githup is the same as the "official" OKlibrary e-mail address.
    4. For ssh-access, the developer registers his public ssh-address (for his computer(s)).
    5. Once registered, the developer creates on github a new repository by "forking" the OKlibrary-repository.
    6. Using (taking ML as an example)
      git remote add devgithub git@github.com:MLewsey/oklibrary.git
      in the *local* repository of the developer, after that the developer can communicate with *his* "fork" as usual by
      git push devgithub
      git pull devgithub master
    7. Using
      git remote add github git://github.com/OKullmann/oklibrary.git
      again at the local repository of the developer, he can also use
      git pull github master
      to pull to his local repository from the central github repository (however, no push).
    8. In order to "push" in this way, the developer has to make at his github-account a "pull-request" to the central repository. This appears to be only for information, but provides additional information (for example the SHA hash-value).
    9. Then the central maintainer (OK) apparently has to pull this change to his local repository (apparently just pulling from the public repository of the developer would work, but the pull-information provided especially by github only pulls the changes mentioned in the pull-request, by using a SHA hash value).
    10. Setting up another abbreviation (like "github" or "devgithub" above) in this case COULD use (taking for example ML's github repo)
      git remote add -f MLgithub git://github.com/MLewsey/oklibrary.git
      (on the central maintainers (OK's) machine). Then via
      git checkout -b MLgithub/master
      git pull MLgithub master:4f0ea0c
      the pull (by OK) is performed, using the SHA-value as provided by the pull-request. Unclear what the "-f" and the "checkout" is good for.
    11. HOWEVER, this creates a branch, and we normally don't do that. So just
      git remote add MLgithub git://github.com/MLewsey/oklibrary.git
      git pull MLgithub master:4f0ea0c
      is to be used.
    12. To update the central github repository, the central maintainer then has to push the changes.
    13. So pushing is only possible to own repositories, while pulling is always possible.
  • DONE (no own server anymore) This setup is reasonable for allowing anybody to contribute, but for the normal work, as stated above, that's a bit too much work, and we just push (if available) to the central local (bare) repository (as on cs-oksvr, if running).
  • The public (read-only) git-address at SourceForge is
    When cloning this repository, one must rename it to "oklib" via
    git clone git://oklibrary.git.sourceforge.net/gitroot/oklibrary/oklibrary oklib
  • A remote-alias for this can be created by
    git remote add sourceforge git://oklibrary.git.sourceforge.net/gitroot/oklibrary/oklibrary
  • The private (read/write) git-address is
    (this needs the password for the SourceForge account).

Definition in file Github.hpp.