git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Subject: [PATCH] Push to create

From
Jeff King <peff@peff.net>
Date
Mar 3, 2009, 08:23 UTC
Message-ID
<20090303082318.GB3158@coredump.intra.peff.net>
In-Reply-To
<7vtz6bf392.fsf@gitster.siamese.dyndns.org>
On Mon, Mar 02, 2009 at 11:56:57PM -0800, Junio C Hamano wrote:
> > I concur w/Jeff and I think git probably should not as well. I think
> > that instead adding it to init might be interesting
> 
> The thing is Jeff and Shawn already rejected that route.
Since when do you listen to me? ;P
I think there are actually two issues to be resolved, though:
  1. What is a standardized way for clients to ask for repo creation?
  2. How do users trigger that repo creation.

I think once you have (1), then (2) is easy. You can have "git init host:dir", "git push --init remote", or whatever, and they can all trigger the same mechanism. For systems which have an out-of-band method, they can continue to behave as they have, or they can hook into the standardized mechanism as if they were clients themselves. So there is not that much point in debating (2), I think, until there is a working (1).

Now (1) is much harder. Some parameters come from the user, but some (including whether creation is allowed at all) must come from the site administrator. And some site administrators will a hook to do whatever site-specific magic they need.

What about the client just calling init-serve on the server as a program which does whatever it wants to create a repo? The shipped default would be:

  #!/bin/sh
  echo >&2 Sorry, repo creation not allowed.
  exit 1

Sites who want to give their users full creation access would do (and obviously the --mkdir option would need to be added):

  #!/bin/sh
  exec git init --mkdir "$@"
Sites which want to restrict can do:
  #!/bin/sh
  for i in "$@"; do
    case "$i" in
    --bare) ;;
         *) echo >&2 Forbidden argument: $i; exit 1 ;;
    esac
  done
  exec git init --mkdir "$@"

Sites like GitHub or Gerrit can munge the arguments as appropriate. They could even allow site-specific options if they wanted as long as they were syntactically correct (i.e., "git init --gerrit-base=foo remote" would pass the argument through to the remote unharmed).

-Peff
Previous: Jay SoffianNext: Jay Soffian
Message 19 of 43 in “Refactor list of environment variables to be sanitized”
  1. 1/4 Refactor list of environment variables to be sanitizedJunio C Hamano, Mar 1, 2009
  2. 2/4 git-init: inject some sanity to the option parserJunio C Hamano, Mar 1, 2009
  3. 3/4 Add init-serve, the remote side of "git init --remote=host:path"Junio C Hamano, Mar 1, 2009
  4. 4/4 "git init --remote=host:path"Junio C Hamano, Mar 1, 2009
  5. Jeff KingMar 1, 2009
  6. Junio C HamanoMar 1, 2009
  7. Jeff KingMar 1, 2009
  8. Shawn O. PearceMar 1, 2009
  9. Subject: [PATCH] Push to createJunio C Hamano, Mar 3, 2009
  10. Jay SoffianMar 3, 2009
  11. Jeff KingMar 3, 2009
  12. Jay SoffianMar 3, 2009
  13. Jay SoffianMar 3, 2009
  14. Junio C HamanoMar 3, 2009
  15. Jay SoffianMar 3, 2009
  16. Junio C HamanoMar 3, 2009
  17. Junio C HamanoMar 3, 2009
  18. Jay SoffianMar 3, 2009
  19. Jeff KingMar 3, 2009
  20. Jay SoffianMar 3, 2009
  21. Jeff KingMar 4, 2009
  22. Junio C HamanoMar 4, 2009
  23. Jay SoffianMar 4, 2009
  24. Junio C HamanoMar 3, 2009
  25. Jeff KingMar 3, 2009
  26. Junio C HamanoMar 3, 2009
  27. Jeff KingMar 3, 2009
  28. Junio C HamanoMar 3, 2009
  29. Jay SoffianMar 3, 2009
  30. Theodore TsoMar 3, 2009
  31. Johannes SchindelinMar 3, 2009
  32. Theodore TsoMar 4, 2009
  33. Miles BaderMar 6, 2009
  34. Shawn O. PearceMar 3, 2009
  35. 1/2 improve missing repository error messageJeff King, Mar 4, 2009
  36. Matthieu MoyMar 4, 2009
  37. Jeff KingMar 4, 2009
  38. Shawn O. PearceMar 4, 2009
  39. Jeff KingMar 5, 2009
  40. 2/2 make remote hangup warnings more friendlyJeff King, Mar 4, 2009
  41. Shawn O. PearceMar 4, 2009
  42. Jeff KingMar 5, 2009
  43. Daniel BarkalowMar 3, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.