| 2006-11-09 |
|
robinr
| Oejet: nah | 00:00 |
|
| it's not more general | 00:00 |
|
spearce
| i think git is simpler than almost anything else out there. but maybe that's because i know it so well. :) | 00:00 |
|
robinr
| it has more workflow built into it than most other SCM tools | 00:01 |
|
| thus it is less general | 00:01 |
|
Oejet
| Hm. | 00:01 |
|
robinr
| however it is also very different | 00:01 |
|
| the distributed and changeset (yes, it's snapshot, I know) is not what many are accustomed with | 00:03 |
|
| insert "model" into that sentence | 00:03 |
|
pasky
| changeset is in everything but sourcesafe and cvs ;) | 00:03 |
|
robinr
| and clearcase | 00:06 |
|
| not sure about pvcs | 00:07 |
|
spearce
| no, definately not in pvcs. | 00:07 |
|
| spearce is still cursed by needing to use pvcs. | 00:07 |
|
robinr
| cvs, vss, cc and pcvs covers what "most" people are used to | 00:07 |
|
| those that are used to version control at all | 00:08 |
|
pasky
| at least ms team foundation server looks a bit sane | 00:09 |
|
robinr
| spearce: is the bug you are looking present if you apply my remove-bufferedinputstream patch? | 00:10 |
|
spearce
| robinr: yea | 00:10 |
|
robinr
| there may be some more buffered streams (and readers) there | 00:13 |
|
spearce
| right now it looks like i have a situation where i'm seeking back within the pack to read the base object but when i do that i decode the header of the base wrong, due to the fact that i'm reading the wrong sequence of bytes from the pack file. | 00:14 |
|
| i can't explain why i'm reading the wrong bytes, but i am. | 00:14 |
|
robinr
| where are you seeking? | 00:17 |
|
spearce
| to go get the data i previously read. | 00:17 |
|
robinr
| I mean src.java:line | 00:18 |
|
spearce
| XInputStream; the position(long) method. | 00:18 |
|
| that method is really broken. | 00:20 |
|
| hmm. putting this at the start of it (so the rest of the logic never runs) seems to fix the bug: | 00:22 |
|
| if (p !=offset){count = 0;offset = p;fc.position(p);return;} | 00:22 |
|
robinr
| shouldn't you do some seeking om the underlying stream in if (p<offset) .. if (d<pos) ? | 00:25 |
|
spearce
| i wouldn't think its needed because i'm just adjusting the pointer within the in memory buffer... | 00:26 |
|
robinr
| couldn't you just use RandomAccessFile? | 00:26 |
|
spearce
| not to read a network stream. :) | 00:27 |
|
| I treat a FileInputStream as random access by getting its FileChannel and seeking that. | 00:27 |
|
| that's what fc.position(p) is about. | 00:27 |
|
robinr
| and it works on network streams? | 00:27 |
|
spearce
| no. :) which is why if its not a FileInputStream fc == null and we throw a "Stream is not reverse seekable" exception. | 00:28 |
|
lu_zero
| how to restrict git-merge to a subdir? | 00:28 |
|
spearce
| lu_zero: you can't. you merge the project you merge everything. | 00:28 |
|
robinr
| spearce: so you won't be able to read pack over the net anyway | 00:29 |
|
spearce
| robinr: no, not yet. i planned to get back to this code to buffer things somehow for deltas but didn't get that far. | 00:30 |
|
lu_zero
| spearce fine, but I need to do that in different steps =P | 00:30 |
|
| lu_zero has to merge quite diverging trees =P | 00:30 |
|
robinr
| lu_zero: you could merge older commits than the head of the other trees | 00:31 |
|
lu_zero
| uh? | 00:32 |
|
| looks like I'm missing something | 00:33 |
| → Oejet joined | 00:33 |
|
lu_zero
| git-merge will automerge whatever it could and leave the conflicts to me | 00:33 |
|
robinr
| if you merge another tree one commit at a time, you'd get fewer and simpler conflicts at a time | 00:33 |
|
| instead of huge complicated conflicts | 00:33 |
|
| -if you're lucky- | 00:34 |
|
lu_zero
| robinr hmm | 00:34 |
|
| lu_zero needs to rtfm another time | 00:34 |
|
robinr
| it's not in the rtfm, I think | 00:34 |
|
lu_zero
| ouch | 00:35 |
|
robinr
| i do that sometimes (not in git, but the principle is the same) | 00:35 |
|
| I get less code to read in order to resolve the conflict | 00:36 |
|
| it is another way of solving many small problems instead of one big | 00:38 |
|
| in my case it's undisciplined developers who are causing conflict by reformatting code | 00:39 |
|
| gotta get some sleep now, before morning comes | 00:40 |
|
| good night | 00:40 |
| → Newsome joined | 00:41 |
|
lu_zero
| nite | 00:41 |
|
| hm | 00:41 |
|
| how to revert to pre-merge ? | 00:41 |
|
spearce
| git reset --hard HEAD^ | 00:41 |
|
| spearce is ready to jump out a freaking window. | 00:47 |
|
lu_zero
| ? | 00:47 |
|
| what happened? | 00:47 |
|
spearce
| How can advancing a pointer into a buffer of data backwards cause data corruption? In Java? Arrrrrrrrrrgh. | 00:47 |
|
lu_zero
| O_O | 00:47 |
| dwmw2_zzz → dwmw2_TPE | 00:58 |
| → Gitzilla joined | 01:16 |
| → sgrimm_ joined | 02:36 |
| Insount_away → Insount | 02:38 |
| → anholt joined | 02:50 |
| → anholt_ joined | 02:50 |
| → spearce joined | 03:37 |
| → anholt joined | 03:52 |
| → spearce joined | 03:54 |
| → sgrimm joined | 04:44 |
| → anholt joined | 04:53 |
| → xjjk joined | 05:05 |
| Insount → Insount_away | 05:05 |
| → lyakh joined | 06:08 |
| → sgrimm joined | 06:30 |
| → meyering joined | 08:04 |
| → ShadeHawk joined | 09:34 |
| → beu joined | 09:50 |
| → kaib joined | 11:09 |
| → robfitz joined | 11:34 |
| → chris2 joined | 12:13 |
| → ferdy joined | 12:40 |
| → GyrosGeier joined | 12:42 |
| → devogon joined | 12:47 |
| → kreaturr joined | 13:32 |
| → benlau joined | 13:42 |
| → robinr joined | 13:43 |
| → _timlarson joined | 14:01 |
| → aggieben_ joined | 14:30 |
| beu → beuster | 14:39 |
|
GyrosGeier
| hmm | 14:45 |
|
| GyrosGeier needs a "refactoring merge" algorithm | 14:46 |
|
GyrosGeier
| darcs has something similar, I was told | 14:46 |
|
| essentially the idea is to say "these commits are caused by refactoring" | 14:46 |
|
| and the merge would try to reduce them to word substitutions and apply these to the other branch as well | 14:47 |
|
ShadeHawk
| note header (when it will get implemented) with two tags, linking to two blobs being scripts, one to do transformation, one to revert transformation, perhaps | 14:50 |
|
| or new merge strategy, which would do wdiff. | 14:50 |
|
| and try to wmerge (if there is such thing) | 14:50 |
|
GyrosGeier
| new merge strategy sounds more promising | 14:55 |
|
| a good thing would be to allow commit objects to be tagged with hints | 14:56 |
|
| like "this is a refactoring" | 14:56 |
|
| so any future merges would see the hint and use the refactoring-merge strategy | 14:56 |
|
ShadeHawk
| not so easy, as now merge strategies (with possibly exclusion of recursive merge strategy), get only endpoints and mergebases, and don't walk commits | 15:00 |
|
| to get hints you have to walk commits and gather those hints | 15:00 |
|
| well, we could enhance git-merge-base to have an option to output those hints, marking somewhat (perhaps in --left-right fashion) to which branch those hints belongs on | 15:03 |
|
| but IIRC we don't have even support fo "note" header | 15:03 |
|
| so I think it should be better to browse through wdiff programs and alike (GNU wdiff, Emacs' Ediff etc.), shake dust of them, and do merge based on wdiff output and comparison to ordinary wdiff. Contents, not the road | 15:06 |
|
| By the way, don't you think that [this discussion] would have better place on git mailing list and/or on git wiki? | 15:06 |
| dwmw2_TPE → dwmw2_gone | 15:21 |
| → _deepfire joined | 16:10 |
| dwmw2_gone → dwmw2_TPE | 16:11 |
|
_deepfire
| weird that git-cherr-pick and git-revert are different commands | 16:11 |
|
| i think revert should be a cmdline flag-option for cpick | 16:12 |
|
| does this question come up often enough? :-) | 16:12 |
|
ShadeHawk
| Actually, git-cherry-pick and git-revert _are_ the same command, they differ only in hardlink name (I think) | 16:14 |
|
| see git-revert.sh in git sources | 16:14 |
|
_deepfire
| oh, it is the naming policy question then, i see | 16:15 |
|
| i think with the current amount of git-* commands, any reduction to common denominator are sensible | 16:16 |
|
| i had to guess the name of the command, and this time i was successful | 16:16 |
|
| god knows what happens next time | 16:17 |
| qball → qbal1 | 16:23 |
| qbal1 → Qball | 16:23 |
|
ShadeHawk
| cherry-pick and revert deals with different things. You usually revert commits in the same branch, you usually cherry-pick commits across branches. | 16:36 |
| → Newsome joined | 16:38 |
| dwmw2_TPE → dwmw2_zzz | 16:39 |
|
ShadeHawk
| GyrosGeier: The only problem with wdiff that is supposedly _slow_. And git pride is it's performance. | 16:42 |
|
| s/is/it is/ | 16:42 |
|
pasky
| isn't it prone to errors? | 16:43 |
|
| (even in common cases) | 16:43 |
|
| "I've introduced foo_t, in the meantime the other branch introduced foo_t too, so I'll rename my foo_t to foo_bang_t, then merge." | 16:44 |
|
| Oops. | 16:44 |
|
| (The other branch introduced different foo_t, obviously.) | 16:44 |
|
| Or "I've renamed foo_t to foo_bang_t, the other branch renamed foo_t to foo_beng_t." What to do? | 16:44 |
|
| note that noting this is as wrong as noting renames, because the user has even less clue about what happenned. If detecting it, it should be detected at merge time. | 16:45 |
|
| (and pickaxe time?) | 16:45 |
|
_deepfire
| ShadeHawk, their man descriptions begin, respectively, with: | 16:49 |
|
pasky
| (cogito has cg-patch -C and cg-patch -R -C) | 16:50 |
|
| (which isn't all that great either, but...) | 16:50 |
|
_deepfire
| Shadehawk, anyway, the usage difference and the concept difference are different differences | 16:51 |
|
| Shadehawk, while the former may or may not be significant, the latter equals nearly zero | 16:51 |
|
| Shadehawk, and it is the concepts that you should build the UI upon, not the usage | 16:52 |
|
ShadeHawk
| and neither you should build UI on _implementation_ | 16:53 |
|
_deepfire
| ... which is not what i am proposing | 16:53 |
|
ShadeHawk
| pasky: my idea was to have in note header the tag to script which generates and script which reverses transformation | 16:53 |
|
pasky
| ShadeHawk: noone's gonna use that, especially if there's a single nontrivial substitution in the whole change | 16:54 |
|
_deepfire
| Shadehawk, the point is that <picking random changesets> + <applying them in both directions> is a very standalone concept | 16:54 |
|
ShadeHawk
| pasky: and the wdiff idea stems from Emacs Ediff/Emerge "refined" diff | 16:54 |
|
_deepfire
| well, s/random/specific/ | 16:55 |
|
ShadeHawk
| _deepfire: similar, but not identical. I think it is a matter of taste if to use two differen commands for that (name of command as a switch), or one command with different switches | 16:56 |
|
| pasky: I didn't even consider (with the wdiff idea) what to do in the case of conflicts | 16:56 |
|
_deepfire
| it is unwarranted concept splitting, and as such is harmful | 16:57 |
|
| ok, enough of my opinion for today :-) | 16:57 |
|
ShadeHawk
| pasky: "noone's gonna use that": I've done 'great subroutines renaming' using script, and had script which reversed transformation for the sole purpose of rebasing the branch with rename (in gitweb) | 16:58 |
|
GyrosGeier
| well | 16:58 |
|
ShadeHawk
| and emails to the list included both scripts in comment section, by the way | 16:58 |
|
GyrosGeier
| currently I have to merge two branches of development | 16:58 |
|
| one of them has mostly sane class_names | 16:58 |
|
| (the other one has less-sane ClassNames) | 16:59 |
|
| while the second branch implements new functionality | 16:59 |
|
ShadeHawk
| what _I_ did with "great subroutines renaming" of gitweb was to create two [Perl] scripts: one to revert changes, and one to create changes, so you can use it for cherry-picking, or in stage :2: or :1: and then use RCS merge/diff3/whatever manually (with one/two files after rename) | 17:06 |
|
| otherwise, you can try to invent wdiff patch or wdiff merge | 17:07 |
|
pasky
| what if someone doesn't have perl installed? | 17:07 |
|
ShadeHawk
| sed or bash then. Perl is required for git, by the way (at least for parts of git) | 17:08 |
|
pasky
| the point was more general :) | 17:08 |
|
| what if there's a backdoor in the renaming script? | 17:08 |
|
ShadeHawk
| yes, I know. I'm pointing a way to solve GyrosGeier problem, not to give generic solution | 17:08 |
|
| that is a matter of trust and examining output | 17:09 |
|
pasky
| you'd need to run it jailed and with limited resources, ... | 17:09 |
|
| well not planting backdoors in the code but in your system | 17:09 |
|
| besides, what when git gets running on native windows? | 17:14 |
|
| etc etc | 17:14 |
| → alley_cat joined | 17:34 |
| → kanru joined | 17:47 |
| ← _deepfire left | 17:52 |
|
ShadeHawk
| ah, well. Or you can just put s/from/to/ in the [nonexistent] note header | 18:00 |
|
pasky
| why can't you put content movement information into note header either, then? | 18:03 |
| → CUTandRUN joined | 18:20 |
| → Gitzilla joined | 18:20 |
|
ShadeHawk
| well, you can, but it is harder to extract among the whole description of the _whys_ of change | 18:21 |
|
| Sorry, I parsed the sentence wrong: it would be better to do content based rename detection, using some kind of wdiff, and [nonexistent] wpatch and wmerge | 18:22 |
|
| and renaming information for porcelains was among one of the proposed uses of the note header | 18:22 |
|
| besides I think you don't usually use script to move contents, while one I think usually use tools (even be they simple s/../../ script) for refactoring | 18:24 |
| → krh joined | 18:59 |
| → lyakh joined | 19:03 |
| → kanru joined | 19:06 |
| → _timlarson joined | 19:06 |
| → beuster joined | 19:06 |
| → lu_zero joined | 19:06 |
| → ruskie joined | 19:06 |
| → emrys joined | 19:06 |
| → pasky joined | 19:06 |
| → fullermd joined | 19:06 |
|
spuk-
| shouldn't git-clone --reference work with via-network repositories ? | 19:06 |
|
ShadeHawk
| not really. there are no remote alternates, and everything that --reference does is set up pointer where one can find old objects (alternate storage) | 19:10 |
|
| which meanst tha only via-network is via network filesystem | 19:10 |
| → sgrimm joined | 19:12 |
| → Oejet joined | 19:12 |
|
spuk-
| but is it an implementation detail, or --reference can never work with network repositories due to some fundamental reason? | 19:12 |
|
ShadeHawk
| fundamental reason | 19:13 |
|
| repository object database (storage) _must_ be available locally | 19:13 |
|
| and alternates is a kind of symlink pointing: here you can get objects if there are not in repository database | 19:14 |
|
| symlinks doesn't work across network, you know... | 19:14 |
|
spuk-
| hmm, ok, thanks | 19:15 |
|
| but im not totally convinced :-p | 19:16 |
| → spearce joined | 19:16 |
|
pasky
| me neither | 19:18 |
|
| I don't think where ShadeHawk comes from when saying that it's fundamentally impossible | 19:18 |
|
| s/think/know/ | 19:18 |
|
spuk-
| git-clone --reference via network protocols could be really nice for some people (like anyone not wanting to fetch a full mozilla repository) | 19:22 |
|
spearce
| that had shallow clones. :) | 19:22 |
|
ShadeHawk
| well, until lazy clone comes, and we have reaching objects through network... but I think it would be better to setup network filesystem like InterMezzo or Coda | 19:22 |
|
| you don't have remote symlinks | 19:23 |
|
| you don't have remote alternates | 19:23 |
|
| (well, not yet, and I think not soon) | 19:23 |
|
pasky
| but there's no fundamental reason for that | 19:24 |
| → segher joined | 19:25 |
|
ShadeHawk
| like there is no fundamental reason for not having remote symlinks, eh? | 19:30 |
|
pasky
| if you have FUSE... | 19:32 |
|
| but that's really different scale | 19:32 |
|
| what you need to do is to just move remote protocols handling one level down to the ultra-core, but it's really different from adding that kind of stuff to the kernel | 19:34 |
|
Oejet
| pasky: Is not that how Plan 9 works? | 19:35 |
|
pasky
| I don't think so but I'm not sure anymore, it's been few years since I've been looking at Plan 9. | 19:36 |
| → robinr joined | 19:39 |
|
ShadeHawk
| one word (well, two): performance. caching. | 19:44 |
|
pasky
| that's the user's problem ;) | 19:44 |
|
ShadeHawk
| how slow git log -p would be, if run without limiters against lazy clone, eh? | 19:44 |
|
pasky
| very.. I think I've been writing about that on the mailing list some time ago | 19:44 |
|
ShadeHawk
| caching is the problem to solve if/when we ever implement lazy clones/remote alternates | 19:44 |
|
spuk-
| caching is "automatic", i think, just keep the fetched objects locally | 19:46 |
|
ShadeHawk
| for performance we eould have to extend git:// protocol to not download all what is missing, but only wjat's requested for things like git-cat-file, or git-show, or git-ls-tree | 19:46 |
| → nud joined | 19:46 |
|
ShadeHawk
| yeah, and you would have lazy clone till first operation on it (without extensions to fetching), then you would have whole repository doenloaded | 19:47 |
|
pasky
| spuk-: it's not really that easy, since with git log -p you'll get _all_ the history objects | 19:48 |
|
| spuk-: but the thing is, since you're doing reachability on your side, you'll get them something like one-by-one | 19:48 |
|
| spuk-: so you can't just naively extend the read_sha1_... routines | 19:48 |
|
spuk-
| i see | 19:49 |
|
ShadeHawk
| spuk-: if/when GitTorrent P2P protocol get's implemented perhaps it would be replacement for lazy clone/remote alternates? | 19:53 |
|
spuk-
| im not sure it is the same problem | 19:57 |
|
| remote alternates would solve (at least): "I just want a checkout, but maybe I will want the history later, so I don't want to download it all, just what I need now" | 19:59 |
|
pasky
| I think an explicit command to get the history would be better in that case | 20:00 |
|
spuk-
| ok | 20:04 |
| → cods joined | 20:08 |
|
ShadeHawk
| spuk-: shallow clones are equivalent of saying: "I'm interested only in most recent history, if I want to dig deeper, I'll fetch it" | 20:18 |
|
| but they don't work, yet (early beta stages I would say, available in repository) | 20:19 |
|
spuk-
| ah! didn't noticed it, sorry | 20:21 |
|
| thanks | 20:21 |
| → spearce joined | 20:23 |
| → cods joined | 20:37 |
| → fatal_ joined | 20:42 |
|
fatal_
| Hi. I have a project that I've been starting up on my workstation, now I've gotten so far as to see that it might be a good idea to start backing up stuff and maybe even tracking some history/changes. I'm not quite sure how to set up a new repo.... I want to have a public one (no working copy) on my server, and a working copy on my workstation... should I cg-init in my current source directory on the WS or should I start by running cg-admin-setuprepo on the se | 20:50 |
|
spearce
| cg-init locally. | 20:50 |
|
| then you can do cg-admin-setuprepo on the server and finally push your work to the server. | 20:51 |
|
fatal_
| ok, thanks... that would mean that there's no "origin" on my workstation copy, right? And there wouldn't be any benifit in having one? | 20:52 |
|
spearce
| you would want to set one up probably to refer to the server just to make things easier on yourself when you want to push changes. but initially right, there isn't one there. | 20:53 |
|
pasky
| if you're gonna push, origin is good because cg-push will default to push to origin | 20:53 |
|
| you can add it using cg-branch-add origin url... | 20:53 |
|
| and you actually can do cg-admin-setuprepo url... too | 20:53 |
|
| spearce wonders what the difference is between cg-version and cg-version.in | 20:53 |
| → DrNick joined | 20:53 |
|
spearce
| cg-version.in isn't documented. but its on the main index page. | 20:53 |
|
fatal_
| ok, thanks mates! Now I feel a bit more confident... :) | 20:53 |
|
pasky
| spearce: it's source for cg-version, cg-help just picks up all the cg- commands :) | 20:56 |
|
spearce
| so i just found a minor bug. :) | 20:57 |
|
| i guess i should just stick with git-gui then. | 20:57 |
|
| has anyone ever built qgit on mac os x? | 21:13 |
|
pasky
| some gentoo people apparently did according to google | 21:18 |
|
| (not that I'd have any clue on how does portage play together with macosx) | 21:18 |
|
spearce
| darwinpots doesn't have a qt port. | 21:19 |
|
| ahh, they have a qt3 port. | 21:20 |
|
robinr
| spearce: your fixed seemed to work here too | 21:24 |
|
| s/fixed/fix/ | 21:24 |
|
spearce
| since you were talking up qgit so much yesterday i figured i should install it and take a look see at the latest version. | 21:24 |
|
robinr
| experience of most git tools seems to be outdated if older than a month | 21:25 |
|
spearce
| robinr: good! i decided to rewrite that section using RandomAccessFile and a better LRU based buffer system, similar to what i did with the mmap windows in git. trying to support network streaming access to packs in the same code is insane; even core git doesn't bother with that. | 21:25 |
|
robinr
| java has mmap too, but I wonder if it is usable | 21:25 |
| ← Newsome left | 21:26 |
|
robinr
| to some extent it is, but is it enough for jgit | 21:26 |
|
spearce
| i almost used it in jgit but the problem with java's mmap is you can't really unmap something until the gc has collected it. this makes unmapping almost useless. | 21:26 |
|
| so if we have large packs (e.g. mozilla) we probably can't use window mapping tricks to get to the data we need. | 21:26 |
|
robinr
| that would be ok, if there was a way to force gc, but there isn't | 21:31 |
|
spearce
| exactly | 21:32 |
|
robinr
| Have you read this one? http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=4724038 | 21:33 |
|
spearce
| the way i'm going to rewrite it will be easier to slide in mmaping if someone finds a reasonable way to do it. | 21:33 |
|
robinr
| there is a workaround it seems | 21:33 |
|
spearce
| i'm still trying to download the url - my system is busy choking through a qt3 compile. just so i can run qgit. | 21:34 |
|
robinr
| qt is big... | 21:35 |
| → jwb joined | 21:35 |
|
spearce
| "This bug can be reproduced often." :-) | 21:36 |
|
robinr
| "This bug can only be reproduced when not looking for it" :( | 21:38 |
|
spearce
| Oh the other reason i didn't use mmaps is this is Eclipse and I use it on Windows; its not uncommon for my Eclipse workbench to take 400 MiB of memory and run for two weeks straight. If I mmapd a pack in egit I probably couldn't repack it without restarting my entire workbench first. :-( | 21:40 |
|
robinr
| spearce: have you noticed that your java formatting is bad for merging? It produces bad contexts for diffs, i.e. likely to match the wrong place | 21:47 |
|
spearce
| does it really? I never noticed that before. | 21:48 |
|
robinr
| I haven't seen in egit, but other code | 21:48 |
|
| a context is typically three lines, like: | 21:48 |
|
spearce
| i use it elsewhere and i can't say i've had problems with it before. | 21:48 |
|
robinr
| } | 21:48 |
|
| catch (IOException e) | 21:48 |
|
| { | 21:48 |
|
spearce
| oh, yea, good point. | 21:48 |
|
robinr
| that could match in a lot of places | 21:49 |
|
spearce
| fine. you draft up a new formatting convention eclipse as project specific settings and get me the patch to apply; i'll reformat everything. | 21:49 |
|
robinr
| isn't the default one ok? | 21:49 |
|
spearce
| the default eclipse style? | 21:49 |
|
| or the java style? (eclipse comes with both) | 21:49 |
|
robinr
| i'm fine with either | 21:50 |
|
spearce
| ok. reformatting is going to be a huge diff. :) | 21:50 |
|
robinr
| with a slight preference for the java conventions (8 byte tabs, 4 space indent) | 21:51 |
|
| spearce: huuuge diff | 21:51 |
|
spearce
| dammit. my office is a freaking sauna with no themostat in it. so they taped up the air conditioner which occupies the only window. now its like 100 degrees in here. *sigh* | 21:52 |
|
robinr
| hmm, 100 degree does sound like a (slighly hot) sauna in my ears | 21:54 |
|
| of course we have different degrees | 21:54 |
|
spearce
| doesn't help that there are also 7 computers in here with me. | 21:54 |
|
robinr
| where are you located? | 21:55 |
|
spearce
| albany new york area, usa. i'm a dumb american. :) | 21:55 |
|
robinr
| an ascii-only guy :) | 21:56 |
|
spearce
| sometimes i store my files as utf-8. :) | 21:56 |
|
robinr
| or is it isolatin1? | 21:57 |
|
| it's a big problem here | 21:57 |
|
spearce
| i'm an ascii only guy and use utf-8 if i'm not using straight ascii. i hate the isolatin encodings, they cause more problems then they are worth imho. | 21:58 |
|
robinr
| we started using isolatin when there was no utf-8 | 21:58 |
|
spearce
| yea, that's a good point. | 21:59 |
|
robinr
| it was a big improvement over localized ascii | 21:59 |
|
| Is your IRC client in UTF-8 mode now? | 21:59 |
|
spearce
| probably not. :) | 21:59 |
|
robinr
| main() ä printf("Hello worldÖn"); å | 22:00 |
|
spearce
| hah, i got ? rather than {. | 22:00 |
|
robinr
| that was what C looked like when I learned it | 22:00 |
|
ShadeHawk
| is it possible to make context for diffs (also for merging) _larger_ in git? | 22:01 |
|
robinr
| oops that was wrong | 22:01 |
|
| main() ä printf("Hello worldÖn"); å | 22:01 |
|
spearce
| ok, a with two dots over it isn't a curly brace. :) | 22:02 |
|
| ShadeHawk: git-merge-recursive uses merge, which i don't think takes a context parameter. git-diff and friends however i think do. | 22:02 |
|
robinr
| our ascii was localized so {|} was remapped to äöå | 22:02 |
|
spearce
| oh that's insane. | 22:03 |
|
robinr
| [\] was ÄÖÅ | 22:03 |
|
| seven bits required that some characters were redefined and those were never used by nontechnical people | 22:03 |
|
| spearce is still waiting for qt3 to compile... | 22:04 |
|
robinr
| add to that the fact that the sorting order is åäö rather than the numerical code | 22:04 |
|
| we would all use utf-8, but we have a legacy of iso-latin to consider | 22:05 |
|
spearce
| right, its like why apache has to support ebdic. :) | 22:06 |
|
| my utf-8 bit was half a joke since 7 bit us-ascii is utf-8 already. | 22:06 |
|
robinr
| ebcdic is a small problem, few machines use it. iso-latin is everywhere i europe | 22:07 |
|
spearce
| but i've been burned in the past with xml transforms whacking higher characters such as the cents symbol, or the euro symbol if i'm not using utf-8 for everything. | 22:07 |
|
robinr
| yeah, it easy for you to switch to UTF-8, effectivel a noop | 22:10 |
|
spearce
| hah, eclipse wont' let me undo a massive reformatting. | 22:13 |
|
robinr
| :( | 22:13 |
|
| hopefully git will | 22:13 |
|
spearce
| heh. yes. i laugh every time i see eclipse won't let me undo something, because i know i have it in git. | 22:14 |
|
robinr
| At work I was thinking of distribution a version of eclipse without the reformatting functions | 22:14 |
|
spearce
| why, are folks using them too often to create huge ugly diffs? | 22:15 |
|
robinr
| yes | 22:15 |
|
| not only ugly, unmergable | 22:15 |
|
| I'me slowly makeing the developers realized the huge value of a readable history | 22:16 |
|
| and that it is much more important than using the "correct" formatting style | 22:16 |
|
spearce
| well the new "correct" egit formatting style is up on my website. | 22:17 |
|
robinr
| that quick :) | 22:17 |
|
spearce
| i had the same fight with other developers. but we've now gone through the pane of reformatting almost every file to a standard convention, and that was before we started to rely on git. | 22:18 |
| dwmw2_zzz → dwmw2_gone | 22:18 |
|
spearce
| its nice being able to just plop code into a file and hit shift-ctrl-f and let eclipse do the magic of making it readable. | 22:18 |
|
| and knowing that the diff will be nice and short as the file was already previously formatted by it. | 22:18 |
|
| yea i committed and pushed that change in git-gui. i'm still building qt3. | 22:19 |
|
robinr
| It seems I will only get conflicts on some debug statements | 22:23 |
|
| here we go... | 22:23 |
| jwb → jwb_gone | 22:24 |
|
| spearce finally has qt3 built. | 22:26 |
| → sgrimm joined | 22:29 |
|
spearce
| hmmrph: "make[2]: o: Command not found" apparently i lack o. | 22:29 |
| → sgrimm joined | 22:34 |
|
robinr
| oh | 22:35 |
|
spearce
| actually my problem was a bad configure script or makefile; uic and moc's variables weren't set so make removed them, then tried to run the "-o" option, which it read the "-" as ignore failure... cute. | 22:38 |
|
| spearce is finally building qgit now. | 22:38 |
|
spearce
| hmm. qgit doesn't seems to understand a file that is different in the index in the working directory... | 22:45 |
|
robinr
| it doesn't have and index view | 22:48 |
|
| to me the index is mostly confusing | 22:48 |
|
spearce
| it does have some nice features, but i'm used to gitk and seem to prefer its rendition of the tree. | 22:49 |
|
robinr
| it's something between the last checked in version and my working directory | 22:49 |
|
| unclear what | 22:49 |
|
spearce
| that's more or less exactly what it is. i find it highly useful. | 22:49 |
|
robinr
| I think I understand it now, but I'd rather ignore it | 22:49 |
|
spearce
| but then again i find mktree useful too and i think junio thinks i'm nuts for that. | 22:50 |
|
robinr
| as I understand it it's like having stgit and one patch only | 22:50 |
|
spearce
| i never thought of it like that, but now that you mention it it makes sense. | 22:51 |
|
robinr
| and ofcourse a performance enhancer for git-pull | 22:51 |
|
pasky
| what's mktree? | 23:01 |
|
robinr
| The GPL has been enforced by a German Court it seems | 23:01 |
|
| ah, old news | 23:01 |
|
| sry about the noise | 23:02 |
| → Newsome joined | 23:02 |
|
spearce
| pasky: it takes the output of ls-tree on stdin, creates a tree object, and returns you the SHA1. useful for hacking a tree into place without actually loading an index. | 23:04 |
|
CIA-12
| Cogito: pasky v0.18 * r7b7e990ac319 /cg-object-id: cg-object-id -b shows current branch name | 23:05 |
|
pasky
| spearce: can't you do the same with a temporary index? | 23:06 |
|
spearce
| yes but it takes a while to load that index on a large tree. if you are only editing the root directory its much faster to use mktree. :) | 23:06 |
|
pasky
| hmm, I suppose so... | 23:07 |
|
CIA-12
| Cogito: pasky v0.18 * rf7fc68e981fe /cg-patch: cg-patch -C: Hint about cg-commit -c if cherrypicking failed | 23:11 |
|
pasky
| hmm, perhaps cg-patch -C should do a merge instead of patch application? | 23:16 |
|
| it would be better except that people might be confused that patch doesn't create .rej files but merge-style conflict markers | 23:17 |
| → GeertB joined | 23:18 |
|
spearce
| i think people could learn a new trick. :) | 23:30 |
|
mugwump
| omg, I have real files where a rename was not detected! | 23:31 |
|
| not even a contrived change! | 23:31 |
|
spearce
| yea, i had a series of those a while back too. | 23:31 |
|
mugwump
| well, files are still reasonably small | 23:32 |
|
| 31 lines, one of them, and I just did a search & replace | 23:32 |
|
spearce
| mine were too, about 100 lines of java code. with only the 'package ...' line changing in the header of the file. | 23:32 |
|
sgrimm
| That's why I think git's rename handling is... well, let's just be polite and say less than optimal. | 23:37 |
|
mugwump
| I think there should be at least a convention for marking renames in the commit message... but even though I've found a real world case, it's still not one that I particularly care about | 23:38 |
|
sgrimm
| IMO the arguments in favor of git's rename algorithm smell a lot like the arguments against supporting transactions from the MySQL developers before they added transaction support. | 23:38 |
| → xjjk joined | 23:38 |
|
spearce
| its reasonably good most of the time. :-) since i really onlu use the rename handling to tell a CVS type system its may be better to rename the ,v (to keep history) vs. just add a new file (with no history) its better than nothing. | 23:38 |
|
mugwump
| I've actually found it better than explicitly tracking renames | 23:38 |
|
| both approaches have their failings | 23:38 |
|
sgrimm
| No reason you can't combine the two, then, right? If a file vanishes, use the existing rename logic to see if it was renamed, but if it's explicitly renamed using a "git rename" command or whatever, use that information instead. | 23:39 |
|
mugwump
| sgrimm: the MySQL developers never added transaction support. somebody else re-implemented the database :) | 23:39 |
|
sgrimm
| mugwump: Fair enough, maybe I should have said "the arguments from the MySQL fanboy community." :) | 23:40 |
| → riddochc joined | 23:40 |
|
riddochc
| Hi, folks. | 23:41 |
|
sgrimm
| As for renames, in practice I use a wrapper script that does a commit of the file under the old name, renames it, and commits it under the new name. That way there is always an exact match for the file contents. | 23:42 |
|
mugwump
| yuck... dummy commits | 23:42 |
|
riddochc
| I'm putting together a talk about Git for tonight's Boulder Linux Users Group meeting. Thought it worth mentioning. | 23:43 |
|
mugwump
| riddochc: got some slides you want reviewing, perhaps? | 23:43 |
|
riddochc
| Working on it. | 23:43 |
|
spearce
| mugwump: yea but that dummy commit is an explicit rename recorded in a commit. :) | 23:44 |
|
sgrimm
| mugwump: Yes, my feeling too. I'd much rather have an explicit rename that's not something else in reality, and can get committed atomically with a bunch of other changes (like content changes to the file being renamed.) | 23:45 |
|
| But absent that, the dummy commit at least works in all the cases I've tried. | 23:45 |
|
| (No good for directory renames if there are files in the dir with the same contents, I guess, but I haven't actually had that happen.) | 23:46 |
|
| mugwump ooo, pizzas & | 23:46 |
| → tmokros joined | 23:48 |
|
robinr
| git finds the renames after git-cvsimport | 23:55 |
|
| so even if CVS doesn't record them, git finds out anyway | 23:55 |
|
ShadeHawk
| there was some talk of having note-renames as _hints_ for rename detection | 23:55 |
|
spearce
| nobody produced working code for that if i recall... | 23:56 |
|
sgrimm
| robinr: Which is the big plus of git's rename system, and I certainly would keep it around for that reason (or to handle renames from non-git-aware tools.) But most often I'm renaming stuff by hand anyway. | 23:56 |
|
robinr
| if you are editing the ,v files making a copy is better than renaming it | 23:58 |
|
pasky
| (but still if you check out an older version you'll have the file there under both the new and old name) | 23:59 |
|
riddochc
| Hm... contributions welcome: what are some of the preconceptions that often get in the way of people understanding git? | 23:59 |
|
| So far, I've got: Forget about Changesets, and There is no trunk. | 23:59 |