* cogito - how do I ??? @ 2005-05-21 21:47 Sam Ravnborg 2005-05-21 22:06 ` Sean 0 siblings, 1 reply; 13+ messages in thread From: Sam Ravnborg @ 2005-05-21 21:47 UTC (permalink / raw) To: git Hi all. While trying to get up to speed on cogito/git I stumbled across a few things that I at least did not find available in cogito. 1) Something similar to "bk changes -R". I use this to see what has happened upstream - to see if I really want to merge stuff. 2) Export of individual patches. "bk export -tpatch -r1.2345" I have nu public git repository yet so I have to feed changes as plain patches. Browsing cg-* I did not find the command to do this. I do try to avoid having to develop my little army of shell scripts, and due to this I have avoided the git- commands for now. Any help appreciated, Sam ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-21 21:47 cogito - how do I ??? Sam Ravnborg @ 2005-05-21 22:06 ` Sean 2005-05-21 23:41 ` Linus Torvalds 2005-05-22 5:27 ` Frank Sorenson 0 siblings, 2 replies; 13+ messages in thread From: Sean @ 2005-05-21 22:06 UTC (permalink / raw) To: Sam Ravnborg; +Cc: git On Sat, May 21, 2005 5:47 pm, Sam Ravnborg said: > Hi all. > > While trying to get up to speed on cogito/git I stumbled across > a few things that I at least did not find available in cogito. > > 1) Something similar to "bk changes -R". I use this to see what has > happened upstream - to see if I really want to merge stuff. Not sure what bk did here, but you can do something like: cg-pull origin cg-log -c -r origin To see what is at the head of the unmerged objects you just pulled down, and if you want to merge then "cg-merge origin". Although as far as I know there's no way to have the log stop automatically at the proper spot. > 2) Export of individual patches. "bk export -tpatch -r1.2345" > I have nu public git repository yet so I have to feed changes as > plain patches. Browsing cg-* I did not find the command to do this. cg-diff -p -r SHA1 Which asks for the diff from the parent (-p) to the revision (-r). Sean ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-21 22:06 ` Sean @ 2005-05-21 23:41 ` Linus Torvalds 2005-05-22 7:14 ` Sam Ravnborg 2005-05-23 7:19 ` Thomas Glanzmann 2005-05-22 5:27 ` Frank Sorenson 1 sibling, 2 replies; 13+ messages in thread From: Linus Torvalds @ 2005-05-21 23:41 UTC (permalink / raw) To: Sean; +Cc: Sam Ravnborg, git On Sat, 21 May 2005, Sean wrote: > On Sat, May 21, 2005 5:47 pm, Sam Ravnborg said: > > Hi all. > > > > While trying to get up to speed on cogito/git I stumbled across > > a few things that I at least did not find available in cogito. > > > > 1) Something similar to "bk changes -R". I use this to see what has > > happened upstream - to see if I really want to merge stuff. > > Not sure what bk did here, but you can do something like: > > cg-pull origin > cg-log -c -r origin In the raw git interfaces, you'd basically have to do the same thing that "git-pull-script" does, except that _instead_ of calling the git-resolve-script thing, you'd do git-rev-tree MERGE_HEAD ^HEAD | git-diff-tree -v -m -s --stdin to show what is in the downloaded MERGE_HEAD but not in HEAD. > > 2) Export of individual patches. "bk export -tpatch -r1.2345" > > I have nu public git repository yet so I have to feed changes as > > plain patches. Browsing cg-* I did not find the command to do this. > > cg-diff -p -r SHA1 And again, without the porcelain this is: git-diff-tree -v -p <name> (Basically, you can do _anything_ with "git-diff-tree". For example, you want "cg log"? Do git-rev-list HEAD | git-diff-tree --stdin -v -m -s which is basically what "git-whatchanged" does). Linus ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-21 23:41 ` Linus Torvalds @ 2005-05-22 7:14 ` Sam Ravnborg 2005-05-22 16:23 ` Linus Torvalds 2005-05-23 7:19 ` Thomas Glanzmann 1 sibling, 1 reply; 13+ messages in thread From: Sam Ravnborg @ 2005-05-22 7:14 UTC (permalink / raw) To: Linus Torvalds; +Cc: Sean, git > > > 1) Something similar to "bk changes -R". I use this to see what has > > > happened upstream - to see if I really want to merge stuff. > > > > Not sure what bk did here, but you can do something like: > > > > cg-pull origin > > cg-log -c -r origin > > In the raw git interfaces, you'd basically have to do the same thing that > "git-pull-script" does, except that _instead_ of calling the > git-resolve-script thing, you'd do > > git-rev-tree MERGE_HEAD ^HEAD | git-diff-tree -v -m -s --stdin That looks ... long. I can teach my fingers to use: cg-log, but the above is just too much to type/remeber do a daily operation. In bk the usage pattern was to check what was in mainline _before_ fetching and merging. So it seems that with git/cogoto one has to fetch the chages, inspect them, and then decide to apply or not. When the fetches changes stay in MERGE_HEAD I assume my work when committed will be based on top of HEAD - so I do not have to know if I have fetched some (unmerged) updates. > to show what is in the downloaded MERGE_HEAD but not in HEAD. > > > > 2) Export of individual patches. "bk export -tpatch -r1.2345" > > > I have nu public git repository yet so I have to feed changes as > > > plain patches. Browsing cg-* I did not find the command to do this. > > > > cg-diff -p -r SHA1 > > And again, without the porcelain this is: > > git-diff-tree -v -p <name> The key here is the SHA1. I hoped to avoid specifying SHA1's with cogito, I so often miss one character when doing copy'n'paste. Thanks all for the replies. Now I feel a bit more confident in this. Sam ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-22 7:14 ` Sam Ravnborg @ 2005-05-22 16:23 ` Linus Torvalds 0 siblings, 0 replies; 13+ messages in thread From: Linus Torvalds @ 2005-05-22 16:23 UTC (permalink / raw) To: Sam Ravnborg; +Cc: Sean, git On Sun, 22 May 2005, Sam Ravnborg wrote: > > > > > 1) Something similar to "bk changes -R". I use this to see what has > > > > happened upstream - to see if I really want to merge stuff. > > > > > > Not sure what bk did here, but you can do something like: > > > > > > cg-pull origin > > > cg-log -c -r origin > > > > In the raw git interfaces, you'd basically have to do the same thing that > > "git-pull-script" does, except that _instead_ of calling the > > git-resolve-script thing, you'd do > > > > git-rev-tree MERGE_HEAD ^HEAD | git-diff-tree -v -m -s --stdin > That looks ... long. That's why people don't generally use git natively. I want teach people what the "raw" interfaces are not because you're supposed to use them, but because I expect that the raw ones are useful for scripting. > In bk the usage pattern was to check what was in mainline _before_ > fetching and merging. In git (and cogito, although it's less obvious), the "fetching" is totally separate from the "merging". In BK, the two were the same - you couldn't merge without fetching, and you couldn't fetch without merging. > So it seems that with git/cogoto one has to fetch the chages, inspect > them, and then decide to apply or not. Well, that's really what you ended up largely doing in BK too, since even if it _looks_ like you first inspect them with "bk changes -R", the fact is, in order to do that, you do have to _fetch_ the data first. It's just that BK (a) fetched just the changeset changes (I think) and (b) then threw the data away. With git, you can also do the "fetch just the changeset changes", since if you use "git-http-pull" you can instruct it to first _only_ fetch the actual commits, and forget about the actual data. But since git considers "fetching" and "merging" totally separate phases, it's up to your scripts whether they leave the objects around or not afterwards. The normal operaion is to leave everything around, since that means that if/when you do decide to merge, you already have the data, and you don't need to re-fetch. If you decide to throw it away, you first remove the reference to the stuff you pulled, and then use "git-prune-script" to get rid of the objects you used. Right now that is admittedly quite expensive, it's considered a "rare" thing to do (sicne even if you decide not to merge, the extra objects never hurt - you can prune things once a week if you care). > When the fetches changes stay in MERGE_HEAD I assume my work when > committed will be based on top of HEAD - so I do not have to know > if I have fetched some (unmerged) updates. Yes. Note that MERGE_HEAD ends up being just a totally temporary reference to the top (that you decided not to merge). It has no meaning for git itself, and the naming and meaning is purely as a git-pull-script (and git-resolve-script) internal temporary thing. > > And again, without the porcelain this is: > > > > git-diff-tree -v -p <name> > > The key here is the SHA1. I hoped to avoid specifying SHA1's with > cogito, I so often miss one character when doing copy'n'paste. You don't have to use the raw SHA1. git understands tags and references, so for example, if you take the "fetch" part of git-pull-script (I really should split it up into "git-fetch-script"), then you can, for example, do git-diff-tree -v -p MERGE_HEAD to see the top of the (unmerged) thing. Similarly, doing a git-rev-list MERGE_HEAD | git-diff-tree --stdin -v -s will give you the changelog for the unmerged side. No SHA1's necessary. Of course, if you don't have a reference to the thing you want to look at, you do need to figure out the SHA1 some way. But for example, gitk will work fine for the unmerged stuff too - ie you can do gitk MERGE_HEAD ^HEAD _before_ you merge, and get all the nice graphical tools to inspect what the hell there is that is new there.. Notice how this "fetch is independent of merge" thing thus means that you can do a lot _more_ than "bk changes -R" ever did. But yes, it's a bit more complex too (so normally you'd probably only use the porcelain layer). Linus ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-21 23:41 ` Linus Torvalds 2005-05-22 7:14 ` Sam Ravnborg @ 2005-05-23 7:19 ` Thomas Glanzmann 2005-05-23 7:40 ` Junio C Hamano 2005-05-23 14:35 ` Linus Torvalds 1 sibling, 2 replies; 13+ messages in thread From: Thomas Glanzmann @ 2005-05-23 7:19 UTC (permalink / raw) To: Linus Torvalds; +Cc: Sean, Sam Ravnborg, git Hello Linus, > git-rev-tree MERGE_HEAD ^HEAD | git-diff-tree -v -m -s --stdin This doesn't work for me: (faui00u) [~/work/git/git] git-rev-tree 2cb45e95438c113871fbbea5b4f629f9463034e7 ^09d74b3b5ac634495e17b92b2b785fa996ffce97 1116799695 2cb45e95438c113871fbbea5b4f629f9463034e7:1 09d74b3b5ac634495e17b92b2b785fa996ffce97:3 (faui00u) [~/work/git/git] git-rev-tree 2cb45e95438c113871fbbea5b4f629f9463034e7 ^09d74b3b5ac634495e17b92b2b785fa996ffce97 | git-diff-tree -v -m -s --stdin (faui00u) [~/work/git/git] Bit this does: (faui00u) [~/work/git/git] git-rev-tree 2cb45e95438c113871fbbea5b4f629f9463034e7 ^09d74b3b5ac634495e17b92b2b785fa996ffce97 | awk '{print $2'} | sed 's#:.*##' | git-diff-tree -v -m -s --stdin was that a typo or is git-diff-tree supposed to handle the output of git-rev-tree as well and it is a bug? Thomas ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-23 7:19 ` Thomas Glanzmann @ 2005-05-23 7:40 ` Junio C Hamano 2005-05-23 8:02 ` Thomas Glanzmann 2005-05-23 14:35 ` Linus Torvalds 1 sibling, 1 reply; 13+ messages in thread From: Junio C Hamano @ 2005-05-23 7:40 UTC (permalink / raw) To: Thomas Glanzmann; +Cc: Linus Torvalds, git >>>>> "TG" == Thomas Glanzmann <sithglan@stud.uni-erlangen.de> writes: >> git-rev-tree MERGE_HEAD ^HEAD | git-diff-tree -v -m -s --stdin TG> This doesn't work for me: It should not. "diff-tree --stdin" expects the line to begin with an SHA1 and it either takes (1) one SHA1 followed by one space followed by another SHA1 potentially followed by garbage til the newline, or (2) one SHA1 potentially followed by garbage til the newline. rev-tree has the timestamp at the beginning which does not match either of them. What you are doing with awk should work, so should this: git-rev-tree MH ^H | sed -e 's/^[0-9]* //' | git-diff-tree --stdin ... ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-23 7:40 ` Junio C Hamano @ 2005-05-23 8:02 ` Thomas Glanzmann 0 siblings, 0 replies; 13+ messages in thread From: Thomas Glanzmann @ 2005-05-23 8:02 UTC (permalink / raw) To: git Hello, > It should not. "diff-tree --stdin" expects the line to begin > with an SHA1 and it either takes (1) one SHA1 followed by one > space followed by another SHA1 potentially followed by garbage > til the newline, or (2) one SHA1 potentially followed by garbage > til the newline. rev-tree has the timestamp at the beginning > which does not match either of them. What you are doing with > awk should work, so should this: thanks for the clarification. > git-rev-tree MH ^H | sed -e 's/^[0-9]* //' | git-diff-tree --stdin ... This is very usefull with a 'pull only' mode. Thanks, Thomas ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-23 7:19 ` Thomas Glanzmann 2005-05-23 7:40 ` Junio C Hamano @ 2005-05-23 14:35 ` Linus Torvalds 2005-05-23 16:34 ` Junio C Hamano 2005-05-24 2:26 ` Herbert Xu 1 sibling, 2 replies; 13+ messages in thread From: Linus Torvalds @ 2005-05-23 14:35 UTC (permalink / raw) To: Thomas Glanzmann; +Cc: Sean, Sam Ravnborg, git On Mon, 23 May 2005, Thomas Glanzmann wrote: > > > git-rev-tree MERGE_HEAD ^HEAD | git-diff-tree -v -m -s --stdin > > This doesn't work for me: Yeah, I'm an idiot. > Bit this does: > > (faui00u) [~/work/git/git] git-rev-tree 2cb45e95438c113871fbbea5b4f629f9463034e7 ^09d74b3b5ac634495e17b92b2b785fa996ffce97 | awk '{print $2'} | sed 's#:.*##' | git-diff-tree -v -m -s --stdin > > was that a typo or is git-diff-tree supposed to handle the output of > git-rev-tree as well and it is a bug? It was me just forgetting about the time thing in rev-tree, forcing you to have a second phase there (I usually use just "cut -d' ' -f2" - the input _can_ have the ":n" flag thing that rev-tree outputs, and git-diff-tree will just ignore it). I actually suspect that whole time thing was a mistake, it seemed sensible back when we didn't have any other way of ordering the changesets well, but it's really a bad ordering anyway to do it by time (ie add a "sort -rn" in there), and we can (and probably should) order rev-tree output with some topological sort based on the commit tree. Linus ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-23 14:35 ` Linus Torvalds @ 2005-05-23 16:34 ` Junio C Hamano 2005-05-24 2:26 ` Herbert Xu 1 sibling, 0 replies; 13+ messages in thread From: Junio C Hamano @ 2005-05-23 16:34 UTC (permalink / raw) To: Linus Torvalds; +Cc: Thomas Glanzmann, Sean, Sam Ravnborg, git >>>>> "LT" == Linus Torvalds <torvalds@osdl.org> writes: LT> ..., and we can (and probably should) order rev-tree output LT> with some topological sort based on the commit tree. Seconded. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-23 14:35 ` Linus Torvalds 2005-05-23 16:34 ` Junio C Hamano @ 2005-05-24 2:26 ` Herbert Xu 2005-05-24 3:05 ` Linus Torvalds 1 sibling, 1 reply; 13+ messages in thread From: Herbert Xu @ 2005-05-24 2:26 UTC (permalink / raw) To: Linus Torvalds; +Cc: sithglan, seanlkml, sam, git Linus Torvalds <torvalds@osdl.org> wrote: > > I actually suspect that whole time thing was a mistake, it seemed sensible > back when we didn't have any other way of ordering the changesets well, > but it's really a bad ordering anyway to do it by time (ie add a "sort > -rn" in there), and we can (and probably should) order rev-tree output > with some topological sort based on the commit tree. Yes please. Can we also have a rev-* command that outputs parent relations instead of a simple list? That is, <tree-1> <parent-1> <tree-1> <parent-2> <tree-2> <parent-3> ... Then you could just run tsort for rev-tree, plus you could use this for other things like finding merges. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-24 2:26 ` Herbert Xu @ 2005-05-24 3:05 ` Linus Torvalds 0 siblings, 0 replies; 13+ messages in thread From: Linus Torvalds @ 2005-05-24 3:05 UTC (permalink / raw) To: Herbert Xu; +Cc: sithglan, seanlkml, sam, git On Tue, 24 May 2005, Herbert Xu wrote: > > Yes please. Can we also have a rev-* command that outputs parent > relations instead of a simple list? That is, > > <tree-1> <parent-1> > <tree-1> <parent-2> > <tree-2> <parent-3> That's not <tree-n>, it's <commit-n>. I think that would be "git-rev-list --parents" or something - that wouldn't impact any existing users. Patches welcome. As to git-rev-tree, that's likely used by scripts in various places (cogito, gitk, gitweb etc), so changing that is nastier, but at least the output could be _sorted_ better. Of course, I really think that the bigger problem with git-rev-tree currently is that global reachability analysis, which is just not acceptable performance-wise. Linus ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: cogito - how do I ??? 2005-05-21 22:06 ` Sean 2005-05-21 23:41 ` Linus Torvalds @ 2005-05-22 5:27 ` Frank Sorenson 1 sibling, 0 replies; 13+ messages in thread From: Frank Sorenson @ 2005-05-22 5:27 UTC (permalink / raw) To: Sean; +Cc: Sam Ravnborg, git -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Sean wrote: > On Sat, May 21, 2005 5:47 pm, Sam Ravnborg said: > >>Hi all. >> >>While trying to get up to speed on cogito/git I stumbled across >>a few things that I at least did not find available in cogito. >> >>1) Something similar to "bk changes -R". I use this to see what has >>happened upstream - to see if I really want to merge stuff. > > > Not sure what bk did here, but you can do something like: > > cg-pull origin > cg-log -c -r origin > > To see what is at the head of the unmerged objects you just pulled down, > and if you want to merge then "cg-merge origin". Although as far as I > know there's no way to have the log stop automatically at the proper spot. Here's what I use: cg-log -c -f -r :origin - -c = colorize the output - -f = list files affected - -r :origin = only display this range (equivalent to "-r HEAD:origin") Frank - -- Frank Sorenson - KD7TZK Systems Manager, Computer Science Department Brigham Young University frank@tuxrocks.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFCkBhAaI0dwg4A47wRAtrdAJ9Hy/H4BNurGd+Ukjtz+0+6sUDIkgCdHJIr KnponX5ITXEDe/r+0dAOmqc= =jaNR -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2005-05-24 3:03 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-05-21 21:47 cogito - how do I ??? Sam Ravnborg 2005-05-21 22:06 ` Sean 2005-05-21 23:41 ` Linus Torvalds 2005-05-22 7:14 ` Sam Ravnborg 2005-05-22 16:23 ` Linus Torvalds 2005-05-23 7:19 ` Thomas Glanzmann 2005-05-23 7:40 ` Junio C Hamano 2005-05-23 8:02 ` Thomas Glanzmann 2005-05-23 14:35 ` Linus Torvalds 2005-05-23 16:34 ` Junio C Hamano 2005-05-24 2:26 ` Herbert Xu 2005-05-24 3:05 ` Linus Torvalds 2005-05-22 5:27 ` Frank Sorenson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).