| 2006-11-29 |
| → riddochc joined | 00:20 |
| → DebolazX joined | 00:23 |
| → Gitzilla joined | 00:33 |
|
mugwump
| so, pasky, why does cg-update print the "Fast-forwarding" message to STDERR? | 00:34 |
|
| er, cg-merge, I mean | 00:34 |
|
| (not a criticism, just asking for the rationale...) | 00:34 |
|
pasky
| uh.. hmm.. can't remember, sorry :) it does so from the start, I think | 00:36 |
|
mugwump
| ok. it's just, if you're scripting, you normally don't want STDERR to be used for normal messages, | 00:37 |
|
| unless the output of the program is intended to be captured | 00:38 |
|
| would you accept a patch for that? | 00:38 |
|
| er, I mean, would you consider a change to that behaviour with a suitably engineered patch? :) | 00:39 |
|
pasky
| yes | 00:40 |
| → anholt joined | 00:40 |
| → GeertB joined | 00:43 |
| → cdcarter joined | 01:11 |
|
cdcarter
| ok, so i have a git repo on my local machine, i want to upload it to my server as a bare repo so i can serve it, and use gitweb | 01:15 |
|
| whats the best way of doing this | 01:15 |
|
spearce
| ssh into the server, `git --git-dir=myproj.git init-db`; then push to that directory from your local machine. | 01:16 |
|
ShadeHawk
| You have to initialize via git init-db --bare the git repository on server, push changes from client (or fetch on server), setup gitweb on server | 01:17 |
| Insount_away → Insount | 01:17 |
|
spearce
| oh yea, duh, --bare. :) | 01:18 |
|
cdcarter
| cool | 01:18 |
|
| git is looking really neat | 01:18 |
|
spearce
| we like it. :) | 01:18 |
|
cdcarter
| heh | 01:18 |
|
| i get this error: fatal: git-init-db [--template=<template-directory>] [--shared] | 01:21 |
|
spearce
| that's a usage message, what was the command line you gave it? | 01:21 |
|
cdcarter
| git init-db --bare | 01:21 |
|
Thumper_
| git --bare init-db | 01:21 |
|
cdcarter
| i get a USAGE message for that one | 01:22 |
|
Thumper_
| swap the --bare and init-db | 01:22 |
|
cdcarter
| cdcarter@concentrationstudios:~/git-presenter$ git --bare init-db | 01:22 |
|
| Usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--help] COMMAND [ ARGS ] | 01:22 |
|
| cdcarter@concentrationstudios:~/git-presenter$ git init-db --bare | 01:22 |
|
| fatal: git-init-db [--template=<template-directory>] [--shared] | 01:22 |
|
spearce
| heh, ok, that's an option we should support. | 01:23 |
|
| and that's an old version of git. | 01:23 |
|
Thumper_
| works for me in 1.4.3.5 | 01:23 |
|
spearce
| use instead then GIT_DIR=myproj.git git init-db | 01:23 |
|
| cdcarter must not be running 1.4.3.5 then. :) | 01:23 |
|
cdcarter
| its version 1.4.1 | 01:23 |
|
mugwump
| ancient! ;) | 01:23 |
|
cdcarter
| from the ubuntu repo | 01:23 |
|
| ill update that | 01:24 |
|
| and trying to get it from the git repo and build it gives me errors | 01:26 |
|
spearce
| git.git always compiles. | 01:27 |
|
cdcarter
| has to do with openssl | 01:27 |
|
spearce
| ah | 01:27 |
|
cdcarter
| cache.h:6:21: error: openssl/sha.h: No such file or directory | 01:27 |
|
| i have openssl installed though | 01:27 |
|
Insount
| cdcarter: You need the openssl-devel package (or whatever Ubuntu calls that). | 01:27 |
|
mugwump
| libssl-dev | 01:28 |
|
cdcarter
| libssl-dev it seems | 01:28 |
|
| ok, its working | 01:29 |
|
| this is good! | 01:29 |
|
ShadeHawk
| ah, well, that teach us to provide git version when asking "why it doesn't work" | 01:35 |
|
cdcarter
| ok, im on 1.4.4.1.ge151 ab=nd it still isnt working | 01:38 |
|
| cdcarter@concentrationstudios:~/git-presenter$ git init-db --bare | 01:38 |
|
| usage: git-init-db [--template=<template-directory>] [--shared] | 01:38 |
|
spearce
| git --bare init-db | 01:38 |
|
cdcarter
| ah ha | 01:39 |
| → hub joined | 01:41 |
| dwmw2 → dwmw2_gone | 01:53 |
|
treitter
| is there any way to generate an index for a repo without having to do the "make scratch repo, commit, push onto original repo"? | 01:57 |
|
| basically, I'm doing a bare clone of an existing repo with a valid index and everything. But the bare clone doesn't have an index of its own, and I'd like to avoid creating the scratch repo, doing a meaningless commit, etc. | 01:58 |
|
| nevermind. I was running into a different issue | 02:15 |
|
cdcarter
| could someone help me with my gitweb apache configuration | 02:26 |
|
| http://pastie.caboo.se/24775 | 02:26 |
|
| im getting a Forbidden error | 02:28 |
| → Gitzilla joined | 03:15 |
|
DraX
| I'm not sure how interested people might be in this but I've been working on a python class for accessing a git repository. It's mostly introspective but will have some manipulative abilities too (basic brancing and committing). | 03:15 |
|
| it can do stuff like: http://rafb.net/paste/results/60UVKg67.html | 03:16 |
| → wildfire joined | 03:17 |
|
cdcarter
| DraX: it looks cool, is it pure python? | 03:29 |
|
DraX
| cdcarter: it parses git-* output | 03:29 |
|
| cdcarter: I toyed with directly reading the tree, but decided I didn't want the headache | 03:30 |
|
cdcarter
| DraX: is the code public? | 03:30 |
|
DraX
| cdcarter: One sec and i'll put it up | 03:31 |
|
cdcarter
| DraX: cool | 03:31 |
|
DraX
| cdcarter: http://git.geekfire.com/?p=gitstore.git;a=summary | 03:33 |
|
cdcarter
| DraX: do you serve your gitweb on apache | 03:33 |
|
DraX
| cdcarter: yes | 03:33 |
|
cdcarter
| DraX: could i see your vhost, mine just fails? | 03:34 |
|
DraX
| add_edit_file is leftovers from the original GitStore implementation | 03:37 |
|
cdcarter
| DraX: thanks | 03:38 |
|
DraX
| and i have a violent (and sometimes wrongfully so) aversion to regex | 03:38 |
|
cdcarter
| hrm, my config stilld eosnt work | 03:41 |
|
| and i set permissions | 03:42 |
|
| drwxrwxrwx 3 cdcarter cdcarter 4096 Nov 29 03:38 gitweb | 03:42 |
|
| -rwxrwxrwx 1 cdcarter cdcarter 131285 Nov 29 02:15 index.cgi | 03:42 |
|
DraX
| you may need to tell apache to handle .cgi | 03:43 |
|
cdcarter
| i have this line | 03:43 |
|
| AddHandler cgi-script .cgi | 03:43 |
|
DraX
| should do it i think | 03:44 |
| ← puzzles left | 04:00 |
| → Gitzilla joined | 04:29 |
|
cdcarter
| im having problems with gitweb, http://pastie.caboo.se/24793 < thats my vonfiguration, and im getting 403 forbidden- no projects found | 04:32 |
| ← Newsome left | 04:59 |
| → lyakh joined | 06:00 |
| → kanru joined | 06:31 |
| → ferdy joined | 06:34 |
| → gitster joined | 06:54 |
| → puzzles joined | 06:56 |
| → meyering joined | 07:15 |
| → ShadeHawk joined | 08:19 |
| dwmw2_gone → dwmw2 | 09:31 |
| → wildfire joined | 09:37 |
| → nud joined | 09:37 |
| → kanru joined | 11:03 |
| → biesi joined | 13:12 |
| → segher joined | 13:23 |
| → Oejet joined | 13:31 |
| → timlarson_ joined | 13:38 |
| → chris2 joined | 13:40 |
| → nud joined | 13:57 |
|
kblin
| there's no way I can get cg update to do the same as git fetch; git rebase origin, is there? | 13:59 |
|
fonseca
| You might be able to do it with a hook. | 14:12 |
|
kblin
| I just don't want to do a git merge but a git rebase instead | 14:13 |
|
fonseca
| Then you don't want to use cg-update, but cg-fetch | 14:13 |
|
| There are some merge hooks where you could do ugly stuff before and after a merge, such as stashing away you local changes and rebasing them afterwards. | 14:15 |
|
kblin
| but how do I rebase after the cg-fetch? | 14:29 |
|
| I mean, I don't mind using git fetch and git rebase, but I'm in the process of writing a guide to using cogito with wine, and I figured it'd be nice to use cogito for most of the stuff | 14:30 |
|
| I can't cg-fetch a tree I cloned using git, right? | 14:31 |
| → GyrosGeier joined | 14:32 |
|
fonseca
| kblin: No, at least not for now. Cogito is moving to also use remotes. | 14:35 |
|
| Why do you want to avoid merges so badly? | 14:35 |
| → DanielHolth joined | 15:02 |
|
ShadeHawk
| kblin: you might want to rework and resubmit 'rebase' merge strategy (formerly: 'subordinate' merge strategy) | 15:22 |
|
| kblin: it should be somewhere on git mailing list | 15:23 |
| → hub joined | 15:23 |
| → benlau joined | 15:24 |
| → alc joined | 15:46 |
| → Oejet joined | 16:11 |
| → Newsome joined | 16:17 |
| → microm joined | 16:33 |
|
microm
| I can't compile git, I get ar: exec_cmd.o: No such file or directory (latest stable v1.4.4.1) | 16:34 |
| → spearce joined | 16:48 |
| → robinr joined | 16:55 |
|
spearce
| robinr: so i'm about 1/2-way through rewriting the pack access code in jgit. | 16:57 |
|
meyering
| aconway: also includes the spec, and gentools, of course. | 17:01 |
|
ShadeHawk
| microm: do you have 'ar' installed? Do you have exec_cmd.o after compile? | 17:08 |
| → Gitzilla joined | 17:15 |
|
ShadeHawk
| what do you think is more important for gitweb: committags support (making http://somehere.com hyperlinks, making BUG(n) link to bugtracker), or remotes (refs/remotes) support? | 17:15 |
|
| and does anyone want for gitweb to work also with StGit? | 17:16 |
|
spearce
| i don't know why you are doing remotes support in gitweb; i would think the committags would be more useful to more people. | 17:16 |
|
| but i really don't use gitweb so don't pay attention to me. :) | 17:17 |
|
ShadeHawk
| well, someone asked for remotes support. on the other hand, someone posted plain_text_url committag support, admittedly broken | 17:18 |
|
spearce
| if the big project that i care about had a bug tracking system which had a web interface which allowed hyperlinking, i'd care very much about committags support. alas, it doesn't. :) | 17:18 |
| → anholt joined | 17:35 |
|
Gitzilla
| Tali: What if I want the submodule to track a branch that is _not_ master or HEAD? | 17:39 |
|
spearce
| (cd submodule;git reset --hard otherbranch) | 17:39 |
|
puzzles
| is submodule support mainstream? | 17:42 |
|
spearce
| no, not even into pu yet. | 17:42 |
|
puzzles
| aww :( | 17:43 |
| → DrNick joined | 17:44 |
| → kanru joined | 17:48 |
|
microm
| ShadeHawk: ar exists, exec_cmd.o is built, but immediately removed with rm -f (along with lots of other .o files), then ar does not find exec_cmd.o. I'll examine the Makefile... | 17:52 |
|
spearce
| robinr: rewritten pack code in jgit is in my web repository. | 17:53 |
|
microm
| sorry, "rm -f libgit.a && ar ..." only deletes libgit.a | 17:54 |
| → Eludias joined | 17:59 |
|
microm
| I don't get it. In the Makefile, the command for the exec_cmd.o: is executed, but it's like $* is empty, so instead of getting exec_cmd.o, I get .o | 18:01 |
|
| got it. I alias to make -r because I never use c. \make brings exec_cmd back into $* | 18:06 |
|
spearce
| hmm... jgit is 15 times slower than native c git. | 18:08 |
|
| "log" of 164302 commits in 105s (jgit) vs. 7s (c git). | 18:09 |
|
ShadeHawk
| it would be nice if it got into pu. but it is in repository; read GitWiki on Submodule support for link. | 18:13 |
| ← microm left | 18:22 |
|
robinr
| spearce: i'll try it | 18:29 |
|
spearce
| robinr: it read the entire mozilla pack, but took 105 seconds to do it. :( | 18:30 |
|
robinr
| how much speedup was there on the mozilla repo? | 18:31 |
|
spearce
| i'm not sure, gimme a couple of minutes to find out. | 18:31 |
|
robinr
| just curious | 18:32 |
|
spearce
| hmm, not much, past version was 146s. | 18:35 |
|
robinr
| I get the my history in 2.3s here | 18:40 |
|
| used to be 2.7 | 18:40 |
|
spearce
| that's without mmaping too, i forgot to turn that on when i sent you the code. :) | 18:41 |
|
| my mozilla test was about 73% of the original time, yours was about 85% of your original time. | 18:42 |
| → lyakh joined | 18:43 |
|
robinr
| my times varies more, some cases was over 3s | 18:44 |
|
| the same "case", different runs | 18:44 |
| → alley_cat joined | 18:49 |
| → spearce joined | 19:01 |
|
robinr
| hmm, 2.4 | 19:16 |
|
| with MapMode.READ_ONLY | 19:17 |
|
spearce
| try MapMode.READ_WRITE. We're slower with READ_ONLY. | 19:22 |
|
| but not by much | 19:22 |
|
| i removed the double decompression we're doing and it didn't make a difference for commit walking on the mozilla repository. | 19:23 |
|
| i'm going to have to throw a profiler onto it to see if i can find where we are spending our time. argh. | 19:30 |
| → Gitzilla joined | 19:41 |
| → znephf joined | 19:46 |
|
robinr
| READ_ONLY is the only one that works | 19:56 |
|
spearce
| is your pack file not writeable by you maybe? | 19:57 |
| dwmw2 → dwmw2_gone | 19:57 |
|
spearce
| packs are usually read-only so that might be the issue | 19:57 |
|
robinr
| it is | 19:57 |
|
| it is writable, i.e. | 19:57 |
|
| oops, looked at the wrong repo | 19:59 |
|
spearce
| the differnce in jgit though between the two formats is probably only a few machine instructions per byte read, maybe less. | 20:00 |
|
| s/foramts/MapModes/ | 20:00 |
|
robinr
| nah, slower | 20:00 |
|
spearce
| hmmph. that's interesting. less bytecode to execute yet it took longer. cute. | 20:01 |
|
tko
| hmm, is there some documentation about just how exactly does loving the index save the day when it comes to merge conflicts and other stuff the index is meant to help with? how things are made better when you understand the index | 20:02 |
|
| I couldn't see anything clear in core-tutorial or tutorial or tutorial-2 | 20:02 |
|
robinr
| maybe my environment is not set up for benchmarking | 20:03 |
|
spearce
| mine isn't exactly either. :) | 20:03 |
|
| but 100s vs. 7s is easy to test and compare. problem is i'm not sure where all of the time is going in jgit... | 20:04 |
|
robinr
| the difference is small, but seems repeatable | 20:04 |
|
ShadeHawk
| what about tutorial-3 (on git mailing list, http://permalink.gmane.org/gmane.comp.version-control.git/31625 | 20:04 |
|
robinr
| spearce: as you said, a profiler is the way to go | 20:04 |
|
| guessing is almost always wrong | 20:04 |
|
spearce
| robinr: know of any good free ones ? i use a commercial one at work, but don't have it here on my mac... | 20:04 |
|
robinr
| I used perfanal a while | 20:05 |
|
ShadeHawk
| tko: index is the place where trivial merges got resolved. index is a place where different versions of file (ancestor, ours, theirs) get saved. | 20:05 |
|
spearce
| tko: it also stores the files which were merged cleanly, so they don't appear in a "git diff". thus "git diff" shows you only the files which still have unresolved conflicts. | 20:06 |
|
ShadeHawk
| if there is conflict during merge | 20:06 |
|
tko
| ShadeHawk, too abstract I'm afraid. I'm yet to see a clear real-world example how the index makes things more easy .. I'll see the tutorial-3 | 20:06 |
|
| I guess I'm missing the 'life with index' vs. 'life without the index' picture and just can't quite visualize it | 20:07 |
| → sgrimm joined | 20:08 |
|
tko
| having used/played with cvs, svn, tla, baz and bzr some aspects (like git diff) are surprising currently | 20:09 |
|
ShadeHawk
| tko: what spearce said follows from the "index as commit preparation stage". It allows to mark things resolved cleanly (and no, merge markers cannot do) | 20:09 |
|
robinr
| i understand the index is very important for git internal, but for the user interface I don't really understand it | 20:09 |
|
| i use stgit most of the time and try not to think of the index | 20:09 |
|
tko
| ShadeHawk, what do you mean commit preparation and why should I care? svn et al have little problems without such thing | 20:10 |
|
ShadeHawk
| as Linus said other SCM use poor-man's-index anyway when preparing and generating a commit | 20:10 |
|
| git allows you to meddle with it | 20:10 |
|
robinr
| ShadeHawk: wrong, it *forces* you to meedle with it | 20:10 |
|
ShadeHawk
| "working area", index is "staging area", and repository is "storage" | 20:11 |
|
| robinr: Not exactly. With Cogito you can forget about index (almost completely I think) | 20:11 |
|
ajax
| i have never wanted to meddle with it | 20:12 |
|
tko
| my commits are usually two kinds.. subset (possibly full set) of files in working tree, or one/some of the files having multiple changes of which I want to commit one or two. first case has never been a problem (just commit those files) -- does the index perhaps help with the second? | 20:12 |
|
| I'm trying to understand just what would be the workflow where the index helps | 20:13 |
|
spearce
| robinr: perfanal sysa we're spending 50% of our time in character set conversion. | 20:14 |
|
tko
| currently I don't see it fitting into much anything I usually end up doing | 20:14 |
|
spearce
| commit bytes -> message string | 20:14 |
|
robinr
| spearce: sounds likely | 20:14 |
|
| spearce: and in my case the conversion is wrong anyway :) | 20:15 |
|
| it tries to interpret iso-8859-1 as utf-8 | 20:15 |
|
tko
| fwiw I sort of kind of understand where the index lies between the commit and working tree, but I fail to see the application for it | 20:16 |
|
robinr
| it would probably be faster to convert outside the reading, if and when conversion is wanted | 20:16 |
|
| ok, some conversion is wanted regardless, but may be fast on a byte array than in a stream | 20:17 |
|
| faster | 20:17 |
|
spearce
| right, lemme see what i can shave out of the commit constructor. | 20:17 |
|
robinr
| tko: to me the index looks like stgit, but with only one level | 20:17 |
|
| spearce: isn't the conversion in the bufferedreader you use to read the commit data? | 20:18 |
|
spearce
| yea, but the commit header (non-message part) i can probably just do in byte[]s. | 20:18 |
|
| and that lets me remove the reader. | 20:18 |
|
ShadeHawk
| tko: In the case of merge, you might have to correct (change) some files which merge algorithm resolved cleanly. Without index you would have no way to check differences between what you did and what merge did, only diff between merge parents and what is in working area | 20:20 |
|
tko
| robinr, ah, a description I can grok. (index doesn't have the commit message though, I think) .. don't see it too useful though :) | 20:20 |
|
robinr
| ShadeHawk: ok, that's a valid point. | 20:21 |
|
| when merging (which is ofcourse most of what Linus does) | 20:22 |
|
ShadeHawk
| and that index is a kind of poor-man's-stgit is also valid | 20:22 |
|
tko
| ok, I haven't done enough merging to have such a problems | 20:22 |
|
ShadeHawk
| hack; hack; git update-index <file>; oh, I forgot something hack; _git diff_; git commit <file> | 20:24 |
|
| is the same (with respect to _git diff_) as | 20:24 |
|
robinr
| tko: in a scaled up environment it is important (I think) to track how conflicts were resolve | 20:24 |
|
ShadeHawk
| hack; hack; git commit <file>; oh, I forgot something hack; _git diff_; git commit --amend <file> | 20:24 |
|
| but --amend was added later | 20:25 |
|
DanielHolth
| Is 'git clone' supposed to eat my server for ten minutes on a 1 GB repository? | 20:25 |
|
ShadeHawk
| also, the index is what traces which files are to be added, or to be removed. some kind of at least implicit poor-man's-index is needed | 20:25 |
|
spearce
| DanielHolth: it may, the server needs to generate the pack for the client. | 20:26 |
|
ShadeHawk
| DanielHolth: which git version? I think that for _clone_ new git just get's pack and doesn't explode it (as older version did due to sharing code with git-fetch and possibility of thin packs sent over wire) | 20:27 |
|
| s/did/probably did/ | 20:27 |
|
DanielHolth
| I think I'm using git-by-git | 20:27 |
|
spearce
| ShadeHawk: we've never exploded the initial pack. | 20:27 |
|
tko
| ShadeHawk, ok, but merging aside why would I want to do update-index rather than commit <files> if I think I'm done? | 20:27 |
|
DanielHolth
| Actually I just saw the -s option, which is what I really want. | 20:27 |
|
spearce
| The issue poor DanielHolth is fighting is that the server is repacking the entire repository, which is somewhat expensive on a large repo. | 20:28 |
|
DanielHolth
| Now my network guy is asking me if it has a pretty Windows frontend & eclipse plugin. | 20:28 |
|
| So anyway 99% of the source repository is one pack anyway. It would be nice if it figured that out. | 20:28 |
|
spearce
| I'm working on both a pretty frontend (git-gui) and an exclipse plugin. | 20:29 |
|
| pretty gui is further along then plugin. | 20:29 |
|
DanielHolth
| Really? And Javagit I suppose. | 20:29 |
|
| Neta | 20:29 |
|
| nifty | 20:29 |
| → dmlb2000 joined | 20:30 |
|
ShadeHawk
| 38s vs around 2s for combinationf of clone -s, clone -s -l, clone -l | 20:30 |
|
tko
| spearce, can you make the pretty gui to have just one "do what I mean" -button? =) | 20:30 |
|
spearce
| tko: that's its default mode. but it doesn't have all of the commands that a git user raelly needs. | 20:31 |
|
ShadeHawk
| strange that git-clone doesn't just transfer existing packs, but generate them on server side, _thickens_ them regardless of whether they are thin or thick, and regenerates index | 20:31 |
| → niv joined | 20:32 |
|
niv
| g'evning :) | 20:32 |
|
robinr
| SWT/Jface sucks | 20:32 |
|
| I tried to change to using SWT.VIRTUAL to speed up the population of the revision browser. but then I had to rewite much of the code instead of using the nice interfaces | 20:33 |
|
niv
| ... i noticed, that git remote info storing has changed so far... and i learned how to store the remotes links into my .git/config... so far so good ... | 20:33 |
|
| ... so i have to use git checkout -b remotes/heads/<head> now to track the remote branches now? | 20:34 |
|
| ... and second question: how do i automate this... is there a way to have this ... at least per branch like in the old days? | 20:35 |
|
spearce
| robinr: i've thus far not had to deal with large jface models. :) | 20:35 |
|
niv
| ... after a git pull i mean. | 20:35 |
|
ShadeHawk
| niv: erm? is should just work, regardless of whether you have remotes info in files in .git/remotes/ or in git config | 20:36 |
|
robinr
| spearce: maybe just me doing something stupid (as usual) | 20:36 |
|
ShadeHawk
| niv: unless you are talking about made default --use-separate-remote | 20:36 |
|
niv
| ShadeHawk: the first thing, which make me wonder was that after a fresh pull of git repository, there was only one local branch... master | 20:37 |
|
| it is the default --use-seaprate-remote | 20:37 |
|
| which is not a bad thing at all. | 20:37 |
|
| ... after i recognized, master was the only local branch, i began tracking next by git checkout -b next remotes/heads/next | 20:38 |
|
| ... and now i wonder, if the local heads (or at least some local heads) are automagically updated on git pull, and if not, how do i setup this. | 20:39 |
|
spearce
| no local heads are updated on pull, only tracking branches. | 20:41 |
|
niv
| so i have to update them by myself... ok :) | 20:41 |
|
spearce
| right. :) | 20:42 |
|
niv
| ... and for new heads or for a new entrypoint i simply have to establish a new branch? | 20:43 |
|
| for new local heads.. | 20:43 |
|
spearce
| yes | 20:43 |
|
niv
| ok, i hope i can train that habbit :) | 20:43 |
|
ShadeHawk
| Tali: have you considered mirroring your module2 repo as fork of git-git repository on repo.or.cz? | 20:50 |
|
| niv: git can only merge into current branch | 20:51 |
|
| niv: which is kind of obcous limitation (what about conflicts) | 20:51 |
|
spearce
| that's just laziness on our part. :) the merge driver could do trivial index merges on other branches. | 20:52 |
|
niv
| well i can live with that... together with that psi1-script from the list | 20:52 |
|
| -i | 20:52 |
|
ShadeHawk
| niv: about new heads - the new glob support for Pull: lines/remote.<repo>.fetch should take care of that | 20:52 |
|
| spearce: what about when merge fails? | 20:53 |
|
niv
| i try to read as fast as i can in my free time.. :) | 20:53 |
|
spearce
| ShadeHawk: notice the "trival" in my comment. :) merge failures can't be handled that way. | 20:53 |
|
niv
| unfortunatelly, there are other disturbing things like university of science and sleep and other things, which take away much free time | 20:53 |
|
| i notised the glob support-threads, but i havent read them. | 20:54 |
|
| noticed *G* | 20:54 |
|
ShadeHawk
| spearce:<pipe dream> about git-gui - it would be nice if git-gui allowe to mark as _for commit_ not only file by file, but chunk by chunk of diff</pipe dream> | 20:57 |
|
spearce
| ShadeHawk: the thought has crossed my mind. :) | 20:57 |
|
ShadeHawk
| spearce: by the way, what is relation between your git-gui and Paul gitool (in provenience, inspiration, and most important features)? | 21:00 |
|
robinr
| add qgit to the comparision table | 21:01 |
|
| ShadeHawk: I entered that as a feature request in eclipse.. not implemented yet :( | 21:01 |
|
| it would fit nicely into the eclipse quickdiff gui :) | 21:02 |
|
spearce
| ShadeHawk: Paul's gitool inspired me to write git-gui, i borrowed the icons from it, and some of his basic gui ideas. Then did more. git-gui can fetch/push/pull some branches, shows the current branch, has good amend support. | 21:03 |
|
niv
| are there any screenshots yet about git-gui? | 21:03 |
|
spearce
| no, i've been too lazy to make them. :) | 21:03 |
|
niv
| hush? :) *duck* | 21:03 |
|
spearce
| oh, git-gui also crashes less than paul's first citool release. the code is more stable. | 21:04 |
|
niv
| well i am more familiar with a text terminal :) | 21:05 |
|
| so its not that urgent :) | 21:05 |
|
spearce
| dammit, why did linus use hex strings for sha1s in commit objects, but binary ones in trees? | 21:06 |
|
ShadeHawk
| because most of commit is text, so it makes sense to make all of it text, while most of tree info (mode, sha1) is binary, so it makes sense to make all binary? | 21:08 |
|
spearce
| its not all binary, the modes are ascii. :) | 21:08 |
|
ShadeHawk
| (filename is also binary of sorts, because it can contain "\n", so has to be "\0" terminated, IIRC) | 21:09 |
|
| Urgh? Why modes in tree are ascii? | 21:09 |
|
spearce
| Yup. :) | 21:09 |
|
ShadeHawk
| Hey, so we can use invalid (non-octal) mode for commit entries/submodules-in-trees support... or can't we? | 21:12 |
|
spearce
| no, because in the index its binary. | 21:12 |
|
niv
| mh... i still don't get howto switch back to a later HEAD, if you made git reset to a former head and want to get back... | 21:13 |
|
ShadeHawk
| Aaargh, using content-type: application/x-tar + content-encoding: gzip makes Mozilla uncompress gzip file on saving | 21:13 |
|
niv
| unfortunatelly i didn't remember the head former revision | 21:13 |
|
| the former head revision :) | 21:13 |
|
ShadeHawk
| do you have reflog enabled? | 21:13 |
|
niv
| nafaik... or is it enabled by default? | 21:14 |
|
ShadeHawk
| otherwise, try git fsck-objects -v, or git lost-found and try to find from there (perhaps using gitk/qgit) | 21:14 |
|
niv
| well if i remember the head sha1, then i can easily switch back... mh... | 21:15 |
|
ShadeHawk
| core.logAllRefUpdates:: This value is false by default | 21:15 |
|
| sorry | 21:16 |
|
niv
| so, it is useful to turn that on before going back in history and afterwards turn it back off? | 21:16 |
|
ShadeHawk
| core.logAllRefUpdates is useful to have turned on by default (if remember correctly there was patch for that on git mailing list) | 21:18 |
|
| it allows for things like HEAD@{2 days ago} or HEAD@{2} (2 updates ago) | 21:19 |
|
cworth
| OK. Here's a quick git puzzle for somebody: | 21:20 |
|
| There was a project in cvs. Someone took the HEAD from CVS, hacked for a while, then shoved the result into git and hacked away for a few months. | 21:20 |
|
| Meanwhile, the original project converted all of its old history to git and conveniently, (though it wouldn't have made it any harder), hasn't done any work in the intervening months. | 21:21 |
|
| So I just want to replay the one repository onto the other. "git-format-patch and git-am" would do the trick, except I need to take care of the "missing" code changes first. | 21:22 |
|
| So, what's the simplest way to make a new commit onto one repository such that it has a tree equivalent to the tree of the initial commit in the other repository? | 21:23 |
|
| What I tried was: | 21:23 |
|
anholt
| doesn't git-format-patch and git-am lose merge history during a branch? it seems like a poor replacement for git-rebase --onto. | 21:23 |
|
cworth
| git pull --strategy=theirs ../other initial-branch | 21:23 |
|
| anholt: Does it? Well, I'd definitely like some replacement for "format-patch and am" without that bug. But, sure, I can just use rebase once I get both of these lines into a single repository. | 21:24 |
|
anholt
| cworth: what I've done before is fetch both branches into a repository, then git-rebase --onto origin company-first-commit company-head | 21:25 |
|
| our only problem is company-first-commit != origin | 21:26 |
|
cworth
| OK. So a "theirs" strategy doesn't exist, but I guess I can use "ours" easily enough. It "feels" awkward, but it should work well enough. | 21:26 |
|
| Never mind. No merge strategy will do what I want since I don't want to generate a multi-parent commit here. | 21:27 |
|
| I feel like I should be able to just copy .git/index or so and get the result I want. Anybody have the trick for me? | 21:27 |
| → Beuc joined | 21:27 |
|
Beuc
| Hey. Is there any situation where a git repository can be automatically repacked? | 21:28 |
|
anholt
| cworth: actually, I think creating one that had as parents origin and company-first-commit, keeping company's would be fine. then we pull the rest of company's stuff onto it. won't that work? | 21:28 |
|
robinr
| cworth: git checkout <commitish> files will update the index to any version | 21:28 |
|
ShadeHawk
| cworth: I think what you can do is to fetch import and hack into one repository, different branches, and then rebase hack branch onto import branch | 21:28 |
|
Beuc
| I created a repository via git-shell today, and looking at it later, I was it packed. But the guy would imported the project only had git-shell access. I'm puzzed :) | 21:29 |
|
| (I mean I created a repository accessible via git-shell only) | 21:29 |
|
ShadeHawk
| if there were changes since hack, I think it would be better to just merge two branches | 21:29 |
|
anholt
| ShadeHawk: that's exactly what we first tried, only the first commit of hack is not equal (at all) to any commit in import. | 21:29 |
|
cworth
| anholt: I should be able to do that with "ours" yes. And I guess it really is a more "honest" represenation in the history of what happened. | 21:29 |
|
niv
| ... one last thing... i think, the email went down in the storm of others... but seriously, the update-hook-example-script really doesn't work.. | 21:30 |
|
cworth
| ShadeHawk: Yes, I want to rebase, and yes I would merge if there had been changes first. | 21:30 |
|
ShadeHawk
| ah, rebase tool needs <upstream>, which in this case would be NULL/VOID commit | 21:30 |
|
cworth
| ShadeHawk: The problem is that the first commit on hack doesn't apply at all to the head of the import due to the "missing" commits. | 21:31 |
|
ShadeHawk
| well, I think you could use cg-admin-rewritehist there | 21:31 |
|
| or try to graft (using graft files) the hack branch on top of import branch | 21:32 |
|
| ShadeHawk wonders how fetch deals with grafts | 21:32 |
|
cworth
| A single merge with "ours" followed by rebase seems to be doing the trick now. | 21:33 |
|
ShadeHawk
| you can rebase using merge with theirs/ours strategy | 21:33 |
|
cworth
| Hmm... merge conflict and failure at patch 166/434. | 21:33 |
|
| ShadeHawk: Is there a "theirs" strategy? The message I got was: | 21:34 |
|
| available strategies are: recur recursive octopus resolve stupid ours | 21:34 |
|
ShadeHawk
| Beuc: with new git, if pack file downloaded cross some threshold (also I think for push) it is stored thickened, instead of exploded into loose objects on receiving | 21:34 |
|
| well, you can trivially modify ours to theirs | 21:34 |
|
| and add it to list of available strategies | 21:35 |
|
cworth
| ShadeHawk: Yeah, so that's the one (tiny) bug I found so far in this. I should be able to put that together easily enough. | 21:36 |
|
ShadeHawk
| well, theirs strategy is I think usually not used for merges, and while I think it might be useful for rebase the rebase-using-merge is quite new | 21:37 |
|
| and post patch to git mailing list... | 21:38 |
|
cworth
| But for now I'm trying to figure out why there's a patch failure during rebase. That shouldn't really be possible since I'm rebasing from one commit to another that should have the same tree (result of an "ours" merge), right? | 21:38 |
|
ShadeHawk
| check out if the commit it fails isn't merge itself | 21:38 |
|
cworth
| gitk suggests I did something seriously strange. Let me start over. | 21:41 |
|
ShadeHawk
| cg-admin-rewritehist with very simple parent filter: see etch-graft example in cg-admin-rewritehist(1) | 21:42 |
|
| To "etch-graft" a commit to the revision history (set a commit to be | 21:42 |
|
| the parent of the current initial commit and propagate that): | 21:42 |
|
| cg-admin-rewritehist --parent-filter sed\ 's/^$/-p graftcommitid/' newbranch | 21:42 |
|
| cg is Cogito | 21:42 |
|
Beuc
| ShadeHawk: cool. Do you know whether the threshold depends on the current push/pull size, or just repacks the repository after more than N MB of objects exist (i.e. even if the latest push was very small)? I ask because I wonder about installing an auto-packing hook script in each repository :) | 21:44 |
|
cworth
| Aha! | 21:44 |
|
| So, I hadn't done anything all that weird after all. gitk just doesn't present multiple parent-less commits in a very intuitive way. | 21:45 |
|
| (One branch ended up getting stacked above the other in the same color and it wasn't at all obvious that they weren't connected at all.) | 21:45 |
|
ShadeHawk
| receive.unpackLimit:: | 21:47 |
|
| If the number of objects received in a push is below this | 21:47 |
|
| limit then the objects will be unpacked into loose object | 21:47 |
|
| files. However if the number of received objects equals or | 21:47 |
|
| exceeds this limit then the received pack will be stored as | 21:47 |
|
| a pack, after adding any missing delta bases. Storing the | 21:47 |
|
| pack from a push can make the push operation complete faster, | 21:47 |
|
| especially on slow filesystems. | 21:47 |
|
| cworth: did you use --topo-order option to git? | 21:48 |
|
cworth
| ShadeHawk: I'm just running "gitk --all". I don't know what options it might be using. | 21:49 |
|
| ShadeHawk: The layout it presents is even quite reasonable really. It was just a bit surprising, (and the branch colors are actually different---it was just hard to tell that because the blue dots dominate the short lines for linear sequences). | 21:50 |
|
robinr
| cworth: try qgit, it lays out the branches slightly differently | 21:52 |
|
ShadeHawk
| s/to git/to gitk/ gitk actually passes the options to git-rev-list and adds some | 21:54 |
|
cworth
| Hmmm... rebase seems to be creating linear history only. That's not what I want. | 21:54 |
|
ShadeHawk
| what about the cg-admin-rewritehist? it is sledgehammer, I agree... | 21:55 |
|
cworth
| Heh, qgit presents an identical layout. | 21:56 |
|
mugwump
| hmm, that's only one branch at a time | 21:56 |
|
robinr
| no, --all shows all branches | 21:56 |
|
mugwump
| I mean cg-admin-rewritehist is one branch | 21:57 |
|
cworth
| At first I thought qgit would make the disconnectedness more obvious (the dots change color as well as the connecting lines), but it turns out that it colors both lines entirely red. :-( | 21:57 |
|
| mugwump: What does "one branch" mean? I am replaying only one "branch", but it's not entirely linear, (it has a few merge commits in its history). | 21:58 |
|
mugwump
| I had to wrap it to deal with multiple heads. I guess I could have made an octopus and pointed it at that | 21:59 |
|
cworth
| ShadeHawk: Yeah, that might be the thing I want here. Or I could just make a merge commit and forget about it. | 21:59 |
|
ShadeHawk
| by the way, pasky, perhaps it would be useful to have ch-admin-rewritehist --sync-with-grafts which sould sync history with [given] graft file. | 22:02 |
|
| cworth reads up on rewritehist | 22:04 |
|
cworth
| ShadeHawk: OK. Looks like etch-graft will do what I want as for as a replacement for rebase. There's still the issue of easily creating that first "missing" commit. | 22:09 |
|
| Hmm.. some quoting problem or something. With the example etch-graft command I keep getting: | 22:14 |
|
| sed: -e expression #1, char 1: unknown command: ` | 22:14 |
|
ShadeHawk
| probably the whole sed invocation should be in "..." | 22:15 |
|
| --parent-filter "sed -e 's/^$/-p graftcommitid/'" | 22:16 |
|
| but I'm not sure | 22:16 |
|
cworth
| Ah, looks like I managed to cut-and-paste a character other than ' | 22:16 |
|
ShadeHawk
| the graftcommitid would be of course the topmost commit of the cvsimport branch | 22:16 |
|
| before etch-graft: | 22:17 |
|
cworth
| Oh, yes. Much more clear in this font. The man page gave me "’" where I wanted "'". :-( | 22:17 |
|
ShadeHawk
| 1---2---3---4---5 <-- cvsimpoer | 22:17 |
|
| A---B---C---D <-- hack branch | 22:17 |
|
| after etch-graft | 22:18 |
|
| 1---2---3---4---5---A---B---C---D | 22:18 |
|
cworth
| ShadeHawk: yup. | 22:18 |
|
ShadeHawk
| perhaps the commit message for 5---A should also be corrected, or some dummy 6' commit be created on top of cvsimport branch... your call... | 22:18 |
|
cworth
| Though what I have right now is instead an extra X commit in there: | 22:18 |
|
| 1--2--3--4--5--X--A--B--C--D | 22:19 |
|
| Where X is a commit that goes from the tree of 5 to the tree of A. | 22:19 |
|
ShadeHawk
| A is initial (parentless) commit in the 'hack' branch, isn't it? | 22:20 |
|
cworth
| ShadeHawk: Oh, you're right, that would just work and I don't need my extra commit at all. | 22:20 |
| ← Beuc left | 22:20 |
|
cworth
| But, yes, I will want to rewrite that commit message. | 22:21 |
|
| ShadeHawk: cg-admin-rewritehist is a more "true git" tool than "rebase" or "format-patch;am" since it only deals with trees, and never patches. That's nice. | 22:22 |
|
ShadeHawk
| well, rebase --merge also doesn't deal with patches, using "linear" merge instead | 22:28 |
|
| on the other hand rebase and "format-patch; am" are higher level: you usually want to rebase _changes_, not the commits itself (so after rebase the branch would incorporate new features from trunk; this is not the case for rewritehist) | 22:29 |
|
cworth
| ShadeHawk: I gues I haven't read up on that yet. | 22:29 |
|
| ShadeHawk: Yes. And something that rewrites history just turns out to be exactly what I wanted here. | 22:30 |
|
| I just hope we can get rid of the git vs. cg- split at some point. | 22:30 |
|
| ShadeHawk: Anyway, I've got the result I want now, so thanks for the help. | 22:30 |
| → halfline_ joined | 22:55 |
|
mugwump
| why would git diff-index show all files as, eg, :100644 100644 51be44f54793748bb2637280c7d54282fb99111b 0000000000000000000000000000000000000000 M .gitignore | 23:25 |
|
| er, git diff-index HEAD | 23:25 |
|
| oh, running inside fakeroot it does | 23:25 |
|
| weird | 23:25 |
|
| maybe it's something to do with that ipc stuff going on | 23:29 |
|
ShadeHawk
| have you reset softly to unrelated branch? | 23:34 |
|
mugwump
| no, normal `git-status' thinks everything is fine | 23:35 |
|
| try it: fakeroot git-diff-index HEAD | 23:35 |
|
| I'll try it on a newer git, this one is from the dark ages. 1.4.2.3 | 23:36 |
|
ShadeHawk
| don't have fakeroot | 23:40 |
|
niv
| there were ages much lighter before the dark ages *G* | 23:44 |
|
mugwump
| roman warm period? :) | 23:47 |
|
ShadeHawk
| dark ages? | 23:48 |
|
| ah | 23:48 |
|
niv
| 1.4.2.3 was not too bad. | 23:49 |
|
ShadeHawk
| Oct 2 is not dark ages | 23:49 |
| → Newsome joined | 23:50 |
|
ShadeHawk
| if you still used 1.3.0 or 1.2.4 this woulc be dark ages. 0.99 would be ancient | 23:51 |
|
niv
| ... and bitkeeper pre-historic? | 23:51 |
|
mugwump
| well, 1.4.4.1 doesn't have the problem :-P | 23:52 |
|
| Oct 2 is like 2 months ago. An aeon! | 23:53 |
|
| there's been 1094 commits since that release! | 23:54 |
|
| and that's just on next! | 23:54 |
|
ShadeHawk
| git rev-list origin | wc -l (which includes gitweb and gitk commits) is 7050 | 23:57 |
|
mugwump
| I did cg-log -s -r v1.4.2.3..next | wc -l | 23:58 |
|
ShadeHawk
| git rev-list v1.4.2.3..origin | wc -l is 1218 | 23:58 |
|
mugwump
| but yeah, good point - that's 1/7th of the lifetime of the project! :) | 23:58 |
|
| measuring time in commits | 23:58 |
|
ShadeHawk
| but that includes merges | 23:58 |
|
| Thu Apr 7 15:13:13 2005 -0700 <-- (one of) initial revision | 23:59 |