Re: Fwd: Re: git checkout -f branch doesn't remove extra files

2005-08-13 Thread Petr Baudis
Dear diary, on Sat, Aug 13, 2005 at 07:05:11AM CEST, I got a letter
where Linus Torvalds [EMAIL PROTECTED] told me that...
 If you really want a temporary tree, what you do is something like
 
   git-checkout-cache --prefix=tmp-dir/ -f -a
 
 and when you're done, you just do
 
   rm -rf tmp-dir
 
 and you're done.
 
 NOTE NOTE NOTE! In the above, the order of the parameters is really really 
 important! -a takes effect when it is seen, so it needs to be last. 
 Also, the --prefix thing really _really_ needs the slash at the end, 
 because it's literally used to prefix the pathname.
 
 HOWEVER, if all you want to do is just a tar-file, then there's a better 
 solution. It's called
 
   snap=git-snapshot-$(date +%Y%m%d)
   git-tar-tree HEAD $snap | gzip -9  $snap.tar.gz
 
 which is even easier, and a hell of a lot more efficient.

To put my two cents too, Cogito has cg-export for this:

cg-export tmp-dir

to export to a temporary directory and

cg-export git-snapshot.tar.gz

to export to a gzipped tarball (it can also do .tar, .tgz and .tar.bz2).

-- 
Petr Pasky Baudis
Stuff: http://pasky.or.cz/
If you want the holes in your knowledge showing up try teaching
someone.  -- Alan Cox
-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fwd: Re: git checkout -f branch doesn't remove extra files

2005-08-13 Thread Sergey Vlasov
On Sat, 13 Aug 2005 13:00:51 +0200 Petr Baudis wrote:

 Dear diary, on Sat, Aug 13, 2005 at 07:05:11AM CEST, I got a letter
 where Linus Torvalds [EMAIL PROTECTED] told me that...
[...]
  snap=git-snapshot-$(date +%Y%m%d)
  git-tar-tree HEAD $snap | gzip -9  $snap.tar.gz
  
  which is even easier, and a hell of a lot more efficient.
 
 To put my two cents too, Cogito has cg-export for this:
 
   cg-export tmp-dir
 
 to export to a temporary directory and
 
   cg-export git-snapshot.tar.gz
 
 to export to a gzipped tarball (it can also do .tar, .tgz and .tar.bz2).

However, cg-export is buggy - if you use the second argument
(cg-export DESTFILE TREE_ID), the resulting tar file is different
from what git-tar-tree produces for the same TREE_ID (unless that
TREE_ID actually points to a tree - but in practice a commit or even
tag ID is typically used).

The problem is in this line:

id=$(tree-id $2)

This converts the passed commit or tag to the underlying tree, which
is then passed to git-tar-tree.  However, git-tar-tree can follow
such links itself, and, what's more important, it actually uses some
information from the passed commit (it writes the commit ID to the
tar file as an extended header, and sets timestamp of all archive
members to the time of the commit).  Therefore reducing the ID
passed to git-tar-tree to a plain tree ID is wrong - if a commit ID
is available, it should be used.

-- 
Sergey Vlasov


pgp2wWm7AoStx.pgp
Description: PGP signature


Re: Fwd: Re: git checkout -f branch doesn't remove extra files

2005-08-12 Thread Dave Jones
On Fri, Aug 12, 2005 at 10:05:11PM -0700, Linus Torvalds wrote:

  HOWEVER, if all you want to do is just a tar-file, then there's a better 
  solution. It's called
  
   snap=git-snapshot-$(date +%Y%m%d)
   git-tar-tree HEAD $snap | gzip -9  $snap.tar.gz
  
  which is even easier, and a hell of a lot more efficient.

Nice. That takes noticably less time to create the sparse/git snapshots
compared to my crappy old script. And its now less than half the size.
I'm sold.

  Git actually has a _lot_ of nifty tools. I didn't realize that people 
  didn't know about such basic stuff as git-tar-tree and git-ls-files. 

Maybe its because things are moving so fast :)  Or maybe I just wasn't
paying attention on that day. (I even read the git changes via RSS,
so I should have no excuse).

Dave

-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fwd: Re: git checkout -f branch doesn't remove extra files

2005-08-12 Thread Linus Torvalds


On Fri, 12 Aug 2005, Linus Torvalds wrote:
 
 Git actually has a _lot_ of nifty tools. I didn't realize that people 
 didn't know about such basic stuff as git-tar-tree and git-ls-files. 

Btw, I just checked that git-tar-tree is documented and has a man-page. It 
does. However, that man-page attributes authorship to me, which is wrong. 
git-tar-tree was written by Rene Scharfe [EMAIL PROTECTED].

Don't know how many other man-pages say I wrote something just because 
people copied another man-page around. Worth fixing, though.

Linus
-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fwd: Re: git checkout -f branch doesn't remove extra files

2005-08-12 Thread Linus Torvalds


On Sat, 13 Aug 2005, Dave Jones wrote:
 
   Git actually has a _lot_ of nifty tools. I didn't realize that people 
   didn't know about such basic stuff as git-tar-tree and git-ls-files. 
 
 Maybe its because things are moving so fast :)  Or maybe I just wasn't
 paying attention on that day. (I even read the git changes via RSS,
 so I should have no excuse).

Well, git-tar-tree has been there since late April - it's actually one of 
those really early commands. I'm pretty sure the RSS feed came later ;)

I use it all the time in doing releases, it's a lot faster than creating a 
tar tree by reading the filesystem (even if you don't have to check things 
out). A hidden pearl.

This is my crappy release-script:

[EMAIL PROTECTED] ~]$ cat bin/release-script
#!/bin/sh
stable=$1
last=$2
new=$3
echo # git-tag-script v$new
echo git-tar-tree v$new linux-$new | gzip -9  ../linux-$new.tar.gz
echo git-diff-tree -p v$stable v$new | gzip -9  ../patch-$new.gz
echo git-rev-list --pretty v$new ^v$last  ../ChangeLog-$new
echo git-rev-list --pretty=short v$new ^v$last | git-shortlog  
../ShortLog
echo git-diff-tree -p v$last v$new | git-apply --stat  
../diffstat-$new

and when I want to do a new kernel release I literally first tag it, and 
then do

release-script 2.6.12 2.6.13-rc6 2.6.13-rc7

and check that things look sane, and then just cut-and-paste the commands.

Yeah, it's stupid.

Linus
-
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html