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

Would this tool be useful - encoding repository data into single URL

From
SGSebastian Gniazdowski <psprint@zdharma.org>
Date
May 9, 2017, 12:48 UTC
Message-ID
<etPan.5911baaf.74b0dc51.6b4c@MacMini>

Hello I wonder about usability of following tool. Quick-start:

    giturl https://github.com/zdharma/giturl -r devel -p lib/coding_functions.cpp
    Protocol: https
    Site:     github.com
    Repo:     zdharma/giturl
    Revision: devel
    File:     lib/coding_functions.cpp
    gitu://ŬṽǚǫoŒẗ6ẏȅcЭÑẩőn4ầŘїệαЃȣϟṈӛŀї
It does Huffman encoding and base-1024 encoding to pack given data into single URL. The Unicode characters selected for base-1024 encoding are letters, not symbols, so double-clicking in e.g. web browser selects the whole code, making it easy to grab a repository data.
Decoding:
    giturl -qd ŬṽǚǫoŒẗ6ẏȅcЭÑẩőn4ầŘїệαЃȣϟṈӛŀї
    https://github.com/zdharma/giturl / rev:devel / file:lib/coding_functions.cpp
I can also encode commits relative to given revision, e.g. bits 10011 are commits 1, 4, 5. Easy to add to the g-code. Selecting 10th commit is only 1 character in base-1024.
However I wonder if this has any uses. Could be patches sent this way? Having refs/patches/<name>, encoding <name> in URL, sending it instead of inlining/attaching a diff, selecting e.g. 3 commits via the bit-mask mentioned. That said, it's more about easy-grab of repository data and storage in well-defined, consistent format, not in language "the branch is ..., commit a7a35cb". Does this make sense?
There are 2 implementations, in Zsh (uses Zshell like e.g. Ruby, not interactively) and C++11 (mostly because of std::regex):

https://github.com/zdharma/giturl https://github.com/zdharma/cgiturl

-- Sebastian Gniazdowski psprint /at/ zdharma.org

Next: Ævar Arnfjörð Bjarmason
Message 1 of 2 in “Would this tool be useful - encoding repository data into single URL”
  1. Sebastian GniazdowskiMay 9, 2017
  2. Ævar Arnfjörð BjarmasonMay 9, 2017

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.