Another option is to create an orphan branch specifically for your temporary 
workings, which can be deleted when its done with. Obviously a little bit of 
hackery would be needed for swapping between the current and orphan branch but 
it shouldn't be that hard.

Philip
(apologies for the top posting - I blame HTML emails :(
  ----- Original Message ----- 
  From: Mickey Killianey 
  To: git-users@googlegroups.com 
  Sent: Tuesday, November 26, 2013 12:02 AM
  Subject: [git-users] Re: Storing extra files in .git


  Thanks for the pointer!  Looking at the git-notes documentation, I'd prefer 
to not use notes if they're tied to commits.  (In my case, these objects are 
private metadata to the git extension I'm writing, so I'd prefer not to attach 
it to a commit where someone might confuse it with actual repo data.) 


  Then I noticed this line, which looks promising:


    It is also permitted for a notes ref to point directly to a tree object


  So, I'll see if I can do that...thanks!


  Mick


  P.S.  FWIW...if anyone reads this later and is looking for other examples of 
tools that store extra stuff in .git/, the git-p4 tool stores its branches 
in.git/refs/remotes/p4, even though there isn't *really* a remote named p4.




  On Monday, November 25, 2013 12:25:49 AM UTC-8, Thomas Ferris Nicolaisen 
wrote:


    On Monday, November 25, 2013 2:50:31 AM UTC+1, Mickey Killianey wrote:
      Does anyone know where I can store extra resources of my own in the .git 
directory?  I'm writing a git extension with some fairly expensive analytic 
computations that I'd like to cache, so that partial results can be reused 
across multiple invocations.


      I was hoping to find some kind of "userspace" in 
https://www.kernel.org/pub/software/scm/git/docs/gitrepository-layout.html 
where my git extensions can save items that shouldn't be associated with a 
commit/branch/tag.


      For example, if I have a results file, would it be reasonable for me to 
add it the object store using git-hash-object, and then put the SHA1 of that 
blob in .git/refs/blobs/my-cached-results?  Or, if I have several different 
files I want to save, could I bundle them under a tree object (presumably using 
git-write-tree), and save that SHA1 to .git/refs/trees/my-cached-files?  
Assuming that the files were the standard format of 40 hex characters plus 
newline, would this be sufficient to protect the trees/blobs from garbage 
collection?


    Have a look at git-notes: 
https://www.kernel.org/pub/software/scm/git/docs/git-notes.html



      Or am I better off *not* using the object store?  If I should just write 
results into a file somewhere under the .git directory, is there a recommended 
place to put such things so that I'm relatively unlikely to collide with future 
git features?




    This depends on what your needs are. Obviously, if things are not in the 
object store, they can't be conveniently pushed or pulled to other 
repositories. As far as I know, there's no convention on this (the only example 
I can think of is git-svn which creates and stores stuff inside .git/svn), but 
if your files are not really related to Git core itself, I would rather put 
them in some directory outside the .git/ folder and then ignore it with 
.gitignore. 

  -- 
  You received this message because you are subscribed to the Google Groups 
"Git for human beings" group.
  To unsubscribe from this group and stop receiving emails from it, send an 
email to git-users+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to