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

Re: Modifying a bare repo directly

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Apr 10, 2017, 10:33 UTC
Message-ID
<CACBZZX7aAHdrvH3wucoQYvZ26mNDYvo3ue4XR0TFF7BxBSWaxw@mail.gmail.com>
In-Reply-To
<CAG_DJYk3D=sPm6rhGRD_wF4dnJqSU_M+c=NWP4Q5ExBap_-kPw@mail.gmail.com>

On Mon, Apr 10, 2017 at 12:09 PM, Julian Goacher <julian.goacher@gmail.com> wrote:

Show 8 quoted lines
> Hi -
>
> Is it possible to modify a bare repo directly? e.g. is it possible to
> insert a file into a bare repo without first cloning a non-bare copy?
> I'm thinking along the lines of a command or sequence of commands that
> modifies the file index and then copies the file blob into /objects,
> but in a situation where the new file exists separately from the
> target repo.
Yes you use the plumbing commands (see "man git", search for plumbing), e.g.:
git init --bare mybare.git
cd mybare.git
echo hello | git hash-object --stdin -w >obj
$ printf "100644 blob $(cat obj)\thello.txt\n" | git mktree
aaa96ced2d9a1c8e72c56b253a0e2fe78393feb7
$ git commit-tree -m "1st commit" aaa96ced2d9a1c8e72c56b253a0e2fe78393feb7
318448647ab7a2b1f78c87cb8a05ac0cf172fbb8
$ git show 318448647ab7a2b1f78c87cb8a05ac0cf172fbb8
commit 3184486
Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date:   Mon Apr 10 12:29:22 2017 +0200
    1st commit
diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..ce01362
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+hello
$ git update-ref refs/heads/master 318448647ab7a2b1f78c87cb8a05ac0cf172fbb8

Now when you clone this repo you'll have that one commit.
Previous: Julian GoacherNext: Jeff King
Message 2 of 6 in “Modifying a bare repo directly”
  1. Julian GoacherApr 10, 2017
  2. Ævar Arnfjörð BjarmasonApr 10, 2017
  3. Jeff KingApr 10, 2017
  4. Eric WongApr 10, 2017
  5. Julian GoacherApr 11, 2017
  6. Jeff KingApr 12, 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.