IRCloggy #git 2012-01-07

Logs Search ←Prev date Next date→ Channels Documentation

Provider of IRC logs since 2005.
WARNING: As Freenode became unjoinable and lost all warnings in topics, we cannot log channels on Freenode anymore.

2012-01-07

beatak_m left00:00
churp left00:00
sitaram ShadeHawk: if I had to convince a PHB to move to a DVCS (any DVCS), section 1 of hginit.com wins over the git parable; though I'd have someone turn it into a presentation :-)00:00
rendar left00:01
stringoO left00:01
ShadeHawk sitaram: doesn't Pro Git include that?00:02
sitaram: anywa, we have now the new source: "Version Control by Example" by Eric Sink (with examples in Subversion, Mercurial, Git and their own new enterprisy DVCS Veracity)00:03
sitaram: and VCBE has nice chapter discussing merits and demerits of DVCS00:04
sitaram wow00:04
veracity... rings a bell00:04
nixmaniack left00:05
sitaram oh00:05
these are the guys who claim "formal rename" as a plus point... I remember now00:05
alexgl left00:06
linusoleander left00:06
BonQuisha left00:06
Morphous_ joined00:06
sitaram ShadeHawk: https://plus.google.com/115609618223925128756/posts/PDPdXTxAvZk00:06
stringoO joined00:06
BonQuisha joined00:07
johnanderson left00:07
johnanderson joined00:07
jaequery left00:08
ShadeHawk "Mercurial only needs enough letters to disambiguate, and there are no other commands that start with st." <-- I wonder if it would be worth to add this feature to Git (in addition to existing help.autocorrect (!!!))00:08
flavius left00:09
mugwump ShadeHawk: tab completion is better I think00:09
linusoleander joined00:09
jaequery joined00:09
sitaram ShadeHawk: could also mess with many people's aliases, no?00:10
ShadeHawk mugwump: yep, though only bash and zsh are supported (the completion stuff from contrib covers both, but IIRC there is also native zsh one)00:12
Mikachu the one distributed with zsh is much better, yes00:12
ShadeHawk mugwump: cmd.exe is not supported, I don't think ;-)00:12
Akufen left00:13
mugwump quickly ports git-completion.bash to 4DOS00:13
delight joined00:13
ShadeHawk Mikachu: in what sense is zsh completion from zsh better than one from contrib area in git.git? More commands supported, more up-to-date, or better context sensitivity (e.g. competing refs where applicable)?00:13
jahid is there any easy tutorial about making a git that will be accessed over the internet?00:13
Bartzy left00:13
Mikachu ShadeHawk: the last one00:13
mandric left00:14
cmn jahid: try out !gitolite00:14
ShadeHawk jahid: what do you mean by "making the git"?00:14
gitinfo jahid: gitolite allows you to host any number of repositories with extensive access control options for any number of users, using just one system account: http://github.com/sitaramc/gitolite00:14
ShadeHawk !gitinfo00:14
gitinfo I am an IRC bot which responds to certain keywords to provide helpful(?) information to humans. Please see http://jk.gs/git/bot for more information about how to use me.00:14
jahid ShadeHawk, making a git repo00:14
niloc132_ joined00:14
penguinbait left00:14
ShadeHawk jahid: "git init"00:15
sitaram --bare00:15
(at the very least)00:15
ShadeHawk sitaram: I think that "enough letters to disambiguate" would trigger as last resort, and only for commands00:16
niloc132_ left00:16
jahid ShadeHawk, I tried all these, and finally did a git bare remote00:16
ramsey left00:16
sitaram ShadeHawk: I guess yeah, but we'd have to learn to stop occasionally mis-spelling our own aliases in case they get mistaken for a git command :)00:16
jahid but didnt work when tried to access over ssh00:16
sitaram jahid: !doesntwork00:17
gitinfo jahid: What happened? Did it fall asleep on your couch? Eat your homework? Destroy your hard drive? Is it making faces at you? Does it want more money? Is it sleeping with your best friend? Please be specific!00:17
sitaram *loves* that one00:17
brian_g left00:18
jahid sitaram, the remote guy can access my comp using ssh, but when he tried to do git clone, he gets message like "remote comp hanged ...."00:18
signal-9 joined00:19
spiette left00:19
ShadeHawk does help.autocorrect work for aliases? help.shortcuts would work the same way ;-/00:19
z0n3d left00:19
sitaram jahid: "can access" means he can get a shell?00:19
jahid sitaram, yes00:20
iocor left00:20
ShadeHawk jahid: please tell us how exactly he tried to clone (whole command), and how he checked that SSH acces work00:20
linusoleander left00:20
ShadeHawk e.g.00:20
sitaram jahid: if so, a "git clone" or whatever should also work, except for possible network speed/disconnect issues that may break the connection00:20
ShadeHawk $ ssh git.example.com hostname00:20
jahid ShadeHawk, git clone abc@my_IP:/opt/git/mygit.git00:20
Mikachu note also that foo:path is relative to homedir, while ssh:// is relative to /00:20
FauxFaux Mikachu: ssh://foo@bar:port/~/lol/ works.00:21
jahid ShadeHawk, he checked ssh works by logging in with "ssh abc@my_ip"00:21
Mikachu sure, just mean by default, if you don't type a leading /00:21
brian_g joined00:21
Mikachu jahid: can you git clone /opt/git/mygit.git on that machine?00:21
jahid yes00:21
sitaram jahid: but after logging in, does he have permissions to read /opt/git/mygit.git?00:21
jahid yes00:21
sitaram jahid: is it a large repo?00:22
Mikachu is the git upload-pack stuff in $PATH for noninteractive shells?00:22
or whatever it is00:22
jahid was my cloning right? "git clone abc@my_ip:/opt/git/my_git.git"00:22
ShadeHawk jahid: check non-interactive shell, like "ssh abc@my_IP git --version"00:22
jahid for ssh do i have to use antying like ssh?00:22
linusoleander joined00:22
sitaram remove the ":"00:23
ShadeHawk jahid: git must be installed on server (at least git-upload-pack and git-receive-pack must be somewhere you know)00:23
Mikachu sitaram: err?00:23
jahid ShadeHawk, no :o00:23
i just installed git-core00:24
sitaram Mikachu: he had 'git clone abc@IP:/path'; I said that colon needs to go. Is that not right (/me goes off to double check)00:24
Mikachu no, the : should be there00:24
ShadeHawk sitaram, jahid: "url = [email@hidden.address] works for me00:24
dankest left00:24
sitaram Mikachu: oops;you're right. I claim it's too early in the morning and I haven't woken up yet :)00:25
jahid ShadeHawk, when i do "apt-get" for "git-upload-pack" and "git_receive-pack", it says unable to locate package00:25
lonewulftp left00:25
ShadeHawk sitaram: "git gui blame" and "git blame -w -C -C" are wonderfull tools00:25
sitaram jahid: does he get any output at all before the "hangup"?00:26
ShadeHawk sitaram: and code movement _tracking_ would not work at all00:26
sitaram ShadeHawk: what does "-w" do?00:26
jahid sitaram, "remote computer hanged unexpectedly"00:27
ShadeHawk jahid: try "git clone --verbose ...", and perhaps also GIT_TRACE=some-file00:27
baburdick left00:27
penguinbait joined00:27
penguinbait left00:27
penguinbait joined00:27
cmn git-upload-pack and git-receive-pack are part of the normal git package in any reasonable package00:27
dv310p3r joined00:27
baburdick joined00:27
ShadeHawk sitaram: "-w" is passed to diff, and means ignore whitespace (very useful for finding code movement, which is usually accompanied by reindent)00:27
grekko left00:28
brian_g left00:28
lonewulftp joined00:28
ShadeHawk cmn: I meant here that minimally you can install those two locally, and it would work if you configure it right00:28
monokrome left00:28
cmn agree, the comment was to jahid searching for those packages00:28
dv310p3r left00:29
dv310p3r joined00:30
lonewulftp ...00:30
ShadeHawk sitaram: about https://plus.google.com/115609618223925128756/posts/PDPdXTxAvZk -- I am not sure (from what I have read in VCBE) that how Veracity implements locking is correct and useful00:31
sitaram ShadeHawk: I suspected as much00:31
ShadeHawk: inconsistent with "D"VCS fundamentally00:31
ShadeHawk: http://sitaramc.github.com/tips/blame-detection-and-C-levels.html <-- your comments appreciated (bit old though; I wrote it long ago)00:31
neurodrone left00:32
ShadeHawk sitaram: anyway for locking support in DVCS, blocking on lock must be build in or doable via hooks00:32
koo4 left00:33
monokrome joined00:33
ShadeHawk And now for something completly different -- I wonder if it would be useful to have gits:// protocol, i.e. git:// over SSL / TLS00:34
k299 left00:34
sitaram ShadeHawk: I can do that on the server side to block a push but by then the manual effort of the change has already been made on the client. You will need a client that queries and honors advisory locks00:34
ShadeHawk: wouldn't socat or such already be able to do that if you wanted to?00:35
ShadeHawk sitaram: pre-commit hook, or built-in into commit with ability to break locks00:35
macRover left00:36
Shusshu left00:36
zsw joined00:36
toabctl left00:37
zsw Is there a way to pull a remote branch without changing from master beforehand?00:37
sitaram fetch yes, but 'pull' -- which requires a merge -- no00:37
mloskot joined00:38
mloskot left00:38
mloskot joined00:38
ShadeHawk or rebase, but lets not go into that ;-)00:38
sitaram you can even force your local copy to be the same as the remote while still being on master but if you have independant changes that need to be merged, you need to checkout the branch and do the merge00:38
zsw: this is because a merge *potentially* requires manual intervention, so it needs a working tree, so it can only be on the checked out branch00:39
zsw sitaram: ah yes, thank you.00:39
Goplat joined00:40
v0n left00:40
d0k left00:40
ShadeHawk sitaram: use sockat to establisg secure tunnel, or something? I was thinking about using gits:// in URL, which would be much simpler (though I wonder if socat can be used to write remote helper for gits://)00:42
monokrome left00:42
TheShagg left00:43
drizzd left00:44
fourcolors joined00:44
sitaram ShadeHawk: true. I was just saying that conceptually it should not be hard and should not require protocol fiddling00:44
reklipz joined00:44
DarkAR left00:44
ipalaus_ left00:45
AaronMT left00:45
sitaram ShadeHawk: the big problem with SSL is server side certs. Sshd host key is more "personal" -- so you accept the "is this key ok to add to known hosts?" thing much more confidently than you would for an SSL "cert unknown" prompt00:45
ShadeHawk and on server side you would have to fiddle with git-daemon and socat or something yourself00:46
reklipz Is it possible to have git ignore the autocrlf setting for certain files? For instance, MS-DOS batch scripts require CRLF line endings. If these files change with any frequency, using the autocrlf feature makes this a nightmare (especially if they are committed with files that the autocrlf feature should apply to).00:46
ShadeHawk reklipz: man gitattributes00:46
gitinfo reklipz: the gitattributes manpage is available at http://jk.gs/gitattributes.html00:46
reklipz ShadeHawk: Perfect; thank you!00:47
reklipz left00:48
sitaram uggh... "branch the mercurial way, by cloning repositories". Just as SVN conflates branch with directory, Hg seems to consistently conflate branch with clone00:48
SethRobertson: ^00:48
warthog9 left00:49
SethRobertson Remember, I was only recommending the website as form over function.00:49
Mercurial branches are really weird. Not normal00:49
monokrome joined00:50
boombatower joined00:50
sitaram SethRobertson: oh yeah, I have ranted about Hg branches before. Not to mention their crazy "bookmarks" and the thrashing over how they should behave00:50
ShadeHawk sitaram: ad http://sitaramc.github.com/tips/blame-detection-and-C-levels.html -- I think that "git gui blame" uses "-w -C -C" for code movement detection00:50
sitaram: and it needs <title> too00:50
sitaram I thikn they all need titles :-) I have to look into that later... thanks00:51
ShadeHawk: if you're sure about the "-w" I'll just add that in; I already said it does "-C -C"00:52
ShadeHawk sitaram: with "bookmark branches" now transferrable in modern Mercurial, clone to branch in Mercurial is no longer true (thoigh hgbook still starts from that as supposedly simpler workflow)00:52
mugwump you need to branch by cloning with mercurial, otherwise you can't delete revisions you didn't mean to make00:52
ShadeHawk sitaram: best to check in "git gui" code, but as it ignores reindent I think it does use "-w"00:52
warthog9 joined00:53
uu joined00:53
setmeaway left00:53
boombatower left00:54
ShadeHawk anyway so "bookmark branches" are transferrable... but they have global namespace, I think to avoid remote-tracking branches ides and remote name to remotr-tracking name ref mapping00:54
^ in Mercurial00:54
setmeaway joined00:55
ehsan joined00:56
hxts left00:56
sitaram I always felt Hg had a lot of "we won't admit we got it wrong in the first place" issues00:57
baburdick left00:57
sitaram in respect of bookmarks, branches, and how git does it versus how Hg does it00:57
baburdick joined00:58
ehsan left00:58
jonshea left00:58
Agos left00:58
FernandoBasso left00:59
pantsman left01:01
fourcolors left01:02
ShadeHawk sitaram: tags in Mercurial, ehhh...01:03
ScottE left01:04
dreiss left01:04
Chaser left01:04
ShadeHawk anyway, having git-serve (gitweb + git-daemon + smart HTTP) would be nice; Perl HTTP::Server::Simple perhaps (where Mercurial uses Python's one whatever it is)01:04
?01:04
BTW I wonder if gitweb would have to be modified to support multi-line headers (signed commits and merges of signed tags)01:07
jast so, not git-instaweb?01:07
ehsan joined01:08
apok left01:08
jast I think it should be possible to extend instaweb to do smart HTTP, though I don't care nearly enough about that feature to be the one to do it ;)01:08
ShadeHawk jast: git-instaweb is only about 1 i.e gitweb of of 3: gitweb, git-daemon, git-http-backend (aka "smart" HTTP)01:08
jast adding git-daemon is trivial01:09
ShadeHawk hmmm... good idea (it could be e.g. 'git instaweb --serve')01:11
git-daemon standalone is not enough to be feature-equivalent with hg-serve, unless git-instaweb would enable pushing via git:// in git-daemon01:11
jaequery left01:11
neurodrone joined01:12
jast which it could, but it's not that useful to support anonymous push01:12
kenperkins left01:14
Rogi_ left01:15
ShadeHawk sitaram: a bit of self promotion wrt. Git vs Mercurial comparison: http://stackoverflow.com/questions/1598759/git-and-mercurial-compare-and-contrast/1599930#1599930 (note that it is from Aug 2011; things change)01:15
jast: hg-serve has unathenthicated push too, isn't it?01:15
jahid left01:15
ShadeHawk unauthenthicated and anonymous01:15
sitaram ShadeHawk: looking...01:16
ShadeHawk: I'll check it out when I come back; have to go away now... weekend chores :-(01:16
ldlework left01:17
ShadeHawk wonders about localtime difference with sitaram01:17
kenichi left01:19
ehsan left01:20
jast ShadeHawk: I have no idea... but it shouldn't. ;)01:22
JustMozzy joined01:22
JustMozzy hi guys. is there anyway to undo a checkout? :s01:23
jast ShadeHawk: hg serve does the same thing by default as git-daemon01:23
and you can optionally enable anonymous push01:23
ShadeHawk ah01:24
JustMozzy I think it is not possible... but maybe someone here knows better? I accidentally called checkout on a file which was not committed yet :s is there a way to undo that?01:24
SethRobertson JustMozzy: !lost01:27
gitinfo JustMozzy: As long as you have `git commit`ed your changes (or even `git add`ed them), your changes will not be lost for over two weeks unless you work really hard at it. There are two places where "lost" changes can be hiding. They might be in the reflog (`git log -g`) or they might be in lost&found (`git fsck --unreachable`). Type "!dangling" and "!reflog" into IRC for more info.01:27
JustMozzy yupp, then they are lost... oh well... at least it was only one file01:28
baburdick left01:28
SethRobertson If you had not committed or added the file, it is toast. Read !best_practices for information about avoiding this (and the dangers of checkout in file mode)01:28
gitinfo There is no one right answer for git best practices, but a consensus from #git is available at https://gist.github.com/154090601:28
brian_g joined01:28
spyro left01:29
spyro joined01:29
EugeneKay That is a wall of a page.01:30
baburdick joined01:30
SethRobertson That is a bicycle of a comment01:30
cannonball joined01:30
millerti left01:31
boombatower joined01:32
jonshea joined01:33
boombatower left01:33
MarcWeber joined01:33
MarcWeber Is there a way to reset a commit to the contents of another commit without taking history?01:33
I'd like to squash many commits - but squashing would cause many conflicts01:34
ericmuyser left01:34
fr0stbyteericmuyser01:34
ericm joined01:34
kevlarman MarcWeber: um, what?01:34
zsw left01:34
ObseLeTe left01:34
SethRobertson MarcWeber: I think you want this: !branch_replace01:34
gitinfo MarcWeber: To replace one branch with the contents of another: git clean -dfx; git checkout $destination; git reset --hard $source; git reset --soft ORIG_HEAD; git add -A .; git commit -m "Rewrite $destination with $source"; git merge -s ours $source01:34
SethRobertson source doesn't have to be a branch, it could be a random SHA01:35
spyro left01:36
MarcWeber git add -A may add random files.01:36
SethRobertson Not after the other commands01:36
MarcWeber Then I can create a diff and apply it - I don't have binaries.01:36
penguinbait left01:36
diegoviola joined01:36
Sir_Rai joined01:36
MarcWeber clean -d, right01:36
Sir_Rai Hi01:37
brian_g left01:37
kevlarman SethRobertson: that's a bit of a nuclear option isn't it?01:37
Prasad joined01:37
mkg7 left01:38
SethRobertson kevlarman: perhaps, but it appears to answer the problem description01:40
dv310p3r left01:40
signal-9 greetings all. I am trying to push to my github pages account. I have not got the first push to work. When I input the command 'git push origin gh-pages' it tells me the repository is not found. Do I have to create a new repository called gh-pages and push to that?01:41
SethRobertson `git remote` says what?01:41
signal-9 SethRobertson: it outputs 'origin'01:42
SethRobertson Can you !repro this for us?01:42
gitinfo please paste (e.g. using http://git.pastebin.com/) a transcript of your terminal session in which the problem occurred so that we can troubleshoot more easily.01:42
robotmay left01:43
signal-9 gitinfo: here is the paste http://pastebin.com/hfe6RTg101:44
RaptorX left01:44
dreiss joined01:45
SethRobertson How about `git remote show origin` Are the URLs correct?01:46
signal-9 SethRobertson: I am not farmiliar with !repro can you tell me how to do this01:46
gitinfo SethRobertson: please paste (e.g. using http://git.pastebin.com/) a transcript of your terminal session in which the problem occurred so that we can troubleshoot more easily.01:46
SethRobertson you did it01:46
jameslord hi01:47
SethRobertson signal-9: !gitinfo01:47
gitinfo signal-9: I am an IRC bot which responds to certain keywords to provide helpful(?) information to humans. Please see http://jk.gs/git/bot for more information about how to use me.01:47
jameslord how to push all local branches to a bare remote repo?01:47
http://paste.ubuntu.com/795586/01:47
cbreak git push bareremote --all01:48
signal-9 SethRobertson: here is the paste for git show01:48
cbreak surprise01:48
signal-9 http://pastebin.com/Ws73ZMDf01:48
jameslord seems only one branch is pushed to remote01:48
spyro joined01:48
kylef joined01:48
cbreak jameslord: because you only push one.01:48
Prasad left01:48
cbreak are you that surprised that git does what you tell it to?01:48
kylef Is it possible to use "git checkout-index" with submodules?01:49
cbreak what for?01:49
thiago left01:49
SethRobertson signal-9: that is all messed up. Can you paste your .git/config file?01:49
friskd left01:49
delight left01:50
signal-9 SethRobertson: http://pastebin.com/LdSM1Mgv01:50
apok joined01:51
jameslord thank you01:51
SethRobertson signal-9: your URL is messed up. You need to git remoet set-url origin URL01:51
flip_digits joined01:51
SethRobertson THe URL is given to you in your github page. [email@hidden.address]01:52
jameslord my networks is not very good, so connection out when using git is usual, if a git process is interrupted , can it start from the point it is interrupted, or it is a transaction, can only fail as a whole01:53
SethRobertson no restarts01:53
If you want to do something like that, you need to create a git-bundle type architecture and transfer using a restarting protocol and program01:53
Not recommended01:53
Well, recommended. Just not simple01:54
jameslord which protocol is recommended? ssh is ok?01:54
SethRobertson ssh has the highest recommendation, but does not restart (without some kind of bundle+rsync thing)01:54
http* restarts more by default, but is harder to use for most things. In any case, creating a bundle architecture would allow restarting more easily01:55
jameslord oh, if failed, all should begin from zero?01:55
SethRobertson clones restart from zero. pulls/pushes restart from the previous pull/push01:55
jameslord if that is a quite large project, for example i git clone ssh:// android, if failed, i should start from zero?01:56
SethRobertson yes01:56
jameslord that is huge amount of code:(01:57
wilmoore left01:57
jameslord but if i use http , it need not to start from zero?01:57
SethRobertson You could clone it somewher elese with good network, then create a tarball from the clone, and then use a restarting protocol (rsync+ssh or http) to download the tarball01:57
boombatower joined01:58
jameslord the problem is if i want to use ssh + rsync, the git server should support rsync, right?01:58
j416 left01:58
baburdick left01:58
jameslord not all remote repo support resyc, anyhow01:58
sitaram ShadeHawk: it's now 7:29am here in India01:59
karstensrage is there a way to have something committed in my local repo pushed to one remote but not to another01:59
jameslord 10:00 am here:)01:59
cbreak jameslord: just get a non-sucky network01:59
Araxia_ left01:59
SethRobertson jameslord: None of this stuff can be done with a standard git server. It is all stuff you must do with a shell account01:59
baburdick joined02:00
SethRobertson karstensrage: Yes, you do not push the branches with that commit to the remote you do not want that commit on02:00
jameslord: So for instance you could fire up an amazon instance, clone your thing, then rsync (with restart) to the amazon instance. Shut down the instance nad use it directly from then on02:00
dcarper1 joined02:01
signal-9 SethRobertson: much respect http://jsudlow.github.com/02:01
mxweas joined02:02
karstensrage SethRobertson, hmm thats an interesting though, how would that be set up usually? like if i have a working branch that is for my own development and my own repo and then another branch that is for github only, what would that workflow look like?02:02
SethRobertson signal-9: nice02:02
karstensrage s/though/thought02:02
txomon|home joined02:02
sitaram ShadeHawk: I had seen that before; read it all through too (I think shortly after you first posted it)02:02
SethRobertson karstensrage: Is this like a configuration file thing? If so then see ideas referenced in !config_files02:03
ASIRINeiluj left02:03
SethRobertson !configfiles02:03
gitinfo the recommended way is to change your application so that you can (perhaps optionally) store site-specific configuration/data in separate files, then keep those files out of version control. Still, see https://gist.github.com/1423106 for ways people have worked around the problem.02:03
jameslord SethRobertson now i am using DH host:)02:07
nadavoid joined02:08
amigojapan left02:08
macabre joined02:10
cccaldas joined02:11
BiggFREE joined02:12
steffo left02:15
karstensrage SethRobertson, this is actual code, unit test .java files02:15
[M]ax left02:17
kevwil_ipad joined02:17
[M]ax joined02:18
ttuttle joined02:19
ttuttle hi guys02:19
I have my repo set up with four branches:02:20
upstream, feature-upstream, local, and feature-local.02:20
I have developed a feature in feature-upstream, on top of upstrea.02:20
I would like to port those commits over to feature-local, on top of local.02:20
No matter what I feed to rebase, it always does something wrong (usually mangling feature-upstream).02:21
ISF_ left02:21
SethRobertson ttuttle: Do you want to copy or move?02:21
ttuttle copy02:21
...oh.02:22
cbreak git rebase --onto local upstream feature-upstream02:22
SethRobertson Are there other changes in feature or upstream which you do NOT want on local?02:22
CollinPDX left02:22
ttuttle SethRobertson: I want to copy *only* upstream..feature-02:22
er02:22
upstream..feature-upstream02:22
CollinPDX joined02:23
cccaldas left02:23
cbreak merge that into the branch you want and restore it if you want.02:23
SethRobertson ttuttle: I recommend `git cherry-pick` then, though a rebase of a copy of feature-upstream might work as well.02:23
ttuttle I dont want to merge.02:23
cbreak you want02:23
it'll be ff02:23
ttuttle ?02:24
if it weren't for reflog I'd've thrown this machine out the window by now02:24
cbreak just do what I told you02:25
or if you want, make a temp copy of the branch02:25
and rebase that02:25
then you don't have to restore it after the merge but can delete it02:25
ttuttle "just do what I told you" is how one ends up not understanding git02:25
I want to use rebase, and I want to know how to get it to do this right.02:25
cbreak read the man page if you want to understand it02:25
ttuttle I know enough about merge to know that I don't want it.02:26
cbreak you want it02:26
obviously you don't know it enough :)02:26
as I said above, it'll be fast forward02:26
rebase --onto the branch you want it to be based on02:27
then merge into that branch02:27
ttuttle okay, so, hold on a sec02:27
cbreak you can go the manual-labor route and cherry-pick the whole thing02:28
ShadeHawk left02:29
baburdick left02:29
ttuttle shouldn't this be a single rebase?02:29
cbreak it is...02:29
+ a merge02:29
ttuttle why do I need the merge?02:29
I don't get that.02:29
cbreak rebase changes a branch by basing it on top of something02:29
matsebc left02:29
ttuttle right02:29
cbreak you want the result to end up in a different branch02:29
so you merge the result into that different branch02:30
ttuttle right, but Idon't want to modify the original either02:30
kerrick left02:30
cbreak that's why you make a temp. copy of the branch02:30
ttuttle maybe rebase can't actually do this02:30
cbreak or restore it after the merge02:30
ttuttle oh02:30
ugh.02:30
cbreak as I wrote above02:30
baburdick joined02:31
kevwil_ipad left02:31
cbreak you know, cherry-pick does work... and it does support range. you're probably able to get a very similar result02:32
tystr left02:32
ttuttle what yeah02:32
I er02:32
er02:32
yeah02:32
cherry-pick should do it02:32
i just thought rebase could, too02:32
I am fuzzy on what exactly is going wrong02:32
cbreak it can02:32
ttuttle no, I mean without any extra steps02:32
cbreak as I described above :)02:32
rebase changes one branch only02:32
SethRobertson cherry-pick uses rebase internally, according to my imagination anyway02:33
ttuttle SethRobertson: it's the other way around for me02:33
cbreak I read it's the exact opposite02:33
rebase uses git apply or git cherry-pick02:33
(-i uses the latter)02:33
ttuttle okay, holy fuck, I got it to do what I want.02:34
git checkout feature-local02:34
git reset --hard feature-upstream02:34
git rebase --onto local upstream02:34
(apologies if that is isomorphic to what you just suggested, cbreak)02:35
SethRobertson This provides a command equivalence between the two for your sort of problem. Note that the cherry-pick range problem was eliminated02:35
http://stackoverflow.com/questions/1994463/how-to-cherry-pick-a-range-of-commits-and-merge-into-another-branch02:35
cbreak that's more or less what I told you, just a different order :)02:35
ttuttle okay :)02:35
yeah, the merge thing didn't make sense to me02:35
cbreak and potentially you lose some commits that way02:35
ttuttle I am allergic to merge, because it leaves merge commits, which I don't want02:35
this way? how?02:35
cbreak because you didn't merge02:35
ttuttle *blink*02:35
I don't understand why that matters?02:36
it's still cherry-picking all of them under the hood, no?02:36
cbreak you nuked changes from feature-local that aren't in local02:36
ttuttle oh, that's fine02:36
I didn't want them02:36
the point here was "I want feature-local to be upstream..feature-upstream, but based on local"02:36
dorisabayon joined02:36
ttuttle anyway, thanks for the help!02:37
cbreak normally, you'd have lots of feature branches, not one :)02:37
ttuttle feature-upstream is where I developed it02:37
cbreak has a few new ones every week02:37
ttuttle feature-local is just where I want it02:37
oh, yeah02:37
I mean, I have a few others02:37
but most are developed against local.02:37
disappea_ joined02:38
apok left02:38
cbreak ttuttle: you should take a look at man gitglossary02:39
gitinfo ttuttle: the gitglossary manpage is available at http://jk.gs/gitglossary.html02:39
cbreak the fast-forward section02:39
Fandekasp left02:40
cannonball left02:40
kukks left02:41
oriba left02:42
kerrick joined02:42
Vampire0 joined02:44
nadavoid left02:46
Vampire0_ left02:46
BiggFREE left02:48
ttuttle left02:49
boombatower left02:50
eletuchy left02:51
mdel left02:52
baburdick left02:53
brainbox1100 left02:56
_Vi left02:59
[RHQme]stringo0 joined02:59
_Vi joined03:00
stringoO left03:02
boombatower joined03:02
checkers left03:07
ISF_ joined03:07
riyonuk joined03:08
mjessome joined03:08
xerora joined03:09
riyonuk Okay, so I'm having some trouble understand some things. Git stores settings on a per-project basis, right? In the .git folder, of whatever folder you just cloned. So where are the "git --global settings" stored? /usr/bin?03:09
bremner $HOME03:11
$HOME/.gitconfig03:11
riyonuk: see man git-config ENVIRONMENT03:12
gitinfo riyonuk: the git-config manpage is available at http://jk.gs/git-config.html03:12
_Vi left03:14
igotnolegs joined03:14
crisp left03:15
riyonuk bremner: Ahh, thanks. Just did a "cat .gitconfig" and saw all my settings. Thanks:)03:15
linusoleander left03:15
_Vi joined03:15
riyonuk So git is pretty much built for one person to be using that machine, right?03:15
Like, it would be hell if multiple people used my laptop, as they'd have to re-configure their git settings?03:16
bremner riyonuk: huh?03:16
would all of your users share the same home directory?03:16
simplechat joined03:16
riyonuk Like, if my friend wanted to write some code, using my macbook, how would he do that? So he too could push to github, under his name though.03:16
simplechat left03:17
simplechat joined03:17
metcalfc left03:17
mjessome left03:17
dotnull joined03:17
bremner I still see what the problem is. If you have settings to be shared between users, put them in the system config. If not, put them in the users home directory.03:18
s/see/don't see/03:18
Guest85118 left03:18
riyonuk Yea, that would work.03:20
milk left03:22
milk joined03:22
dys` joined03:24
ObseLeTe joined03:24
koo4 joined03:25
kerrick left03:26
dys left03:26
elisa87 joined03:26
mloskot left03:29
fayimora left03:30
truc joined03:31
ObseLeTe left03:31
truc left03:31
fayimora joined03:31
curtp joined03:32
elisa87 left03:32
curtp my master (remote) branch is stuck on a commit. I can see the changes in the remote branch, but I can't figure out how to pull it local. Any pointers?03:32
apok joined03:33
curtp it is on an old commit from what I can tell. there are a few more commits that came in after it, and I'd like to be on the most recent commit03:33
detaer left03:34
curtp left03:35
Sigma left03:36
boombatower left03:37
truc12 joined03:37
hyperair left03:38
keller joined03:39
milk left03:39
milk joined03:40
milk left03:40
disappea_ left03:41
milk joined03:42
flaguy48 left03:48
dr0id joined03:50
orafu left03:53
orafu joined03:53
angelsl joined04:00
xiong I have this idea, which I admit is quite vague. I'd like to know if anything in the git community reflects it. It has to do with multiple related branches that remain in defined relationships to one another.04:05
dorkmafia left04:05
riyonuk left04:06
xiong For example, on one branch there might be a set of files in foo/; and in a second branch, the same files in bar/baz/. I'd like to say that when any such file is changed on either branch, switching to the other branch will immediately find the change made in the right place.04:07
tshauck joined04:07
truc12 left04:08
dirkle joined04:08
tellone joined04:09
gitnewbie joined04:16
tellone left04:16
gitinfo set mode: +v04:17
gitnewbie My remote master branch seems to be stuck on an old commit. When I try to pull the latest commit pushed by someone else, it isn't pulled down. git status shows the diff and I can see their changes, but for some reason when I pull i get the "already up to date" message.04:17
beautifulmind joined04:17
gitnewbie how can move the master branch to point to the most recent commit?04:18
SethRobertson gitnewbie: Do you want to save anything which you have done?04:18
gitnewbie I don't have any local changes04:19
if that is what you mean04:19
SethRobertson If you are quite sure of that, `git checkout master; git reset --hard @{u}` will zap the master branch and have it point to what your upstream is pointing to04:19
Samual left04:21
gitnewbie SethRobertson: I tried your command and got the same "already up-to-date" message.04:21
SethRobertson There were two commands04:21
mxweas left04:22
SethRobertson Neither should have produced that message04:22
Did you run a third command?04:22
gitnewbie the git reset --hard command is what caused it04:22
git pull04:22
sorry... that is the one that produced the message04:22
SethRobertson You should be up to date at this point, yes. What makes you think you are not?04:22
gitnewbie I looked for the change, but it isn't there.04:22
Oh.... when I do a git status, it shows me a diff that displays the changed file04:23
sorry..... git show04:23
SethRobertson git show what?04:23
no arguments?04:24
tizzo-afktizzo04:24
gitnewbie correct, no arguments04:24
tshauck left04:24
dreiss left04:24
tellone joined04:24
gitnewbie the diff shows the commit sha that was displayed when I did the reset --hard. then it goes into a diff display that shows the new code that is out there04:25
gavin_huang joined04:25
gitnewbie I had the person who did the new commit send me the output of 'git reflog' and it shows a different commit sha as the first entry04:26
SethRobertson If `git show` with no arguments show the diff, the diff is in your repository04:29
gitnewbie my local repository or the remote repository?04:30
SethRobertson local04:30
eletuchy joined04:30
SethRobertson The same repo which run `git show` has the commit04:30
gitnewbie ok.... checking again04:32
tellone left04:34
gitnewbie SethRobertson: you're right... it is there! Thanks for helping me out04:34
SethRobertson sure04:35
gitnewbie so.... can you give me a quick explanation of the git reset --hard @{u} command?04:35
or, is there a link I can go read up on it?04:35
SethRobertson `man git-reset` @{u} is the shortcut for the remote tracking branch for your upstream04:37
gitinfo the git-reset manpage is available at http://jk.gs/git-reset.html04:37
gitnewbie thanks04:37
gitnewbie left04:39
nardev left04:40
Moult joined04:43
Moult i've read here and there that gitosis is deprecated in favour or gitolite. i thought i'd better pop in here and check. is this true? anything else i should know?04:44
neurodrone left04:45
alexim joined04:45
SethRobertson !gitosis04:47
gitinfo gitosis is no longer maintained and supported by the author; we usually recommend gitolite instead which has much better documentation and more features: http://github.com/sitaramc/gitolite04:47
SethRobertson Other things you should know? Plenty. Perhaps generically read !best_practices04:47
gitinfo There is no one right answer for git best practices, but a consensus from #git is available at https://gist.github.com/154090604:47
unreal left04:48
berserkr left04:49
amigojapan joined04:51
amigojapan_ joined04:52
Moult SethRobertson: thanks. that's a very nice document as well for best practices :)04:52
nardev joined04:52
disappea_ joined04:53
wilmoore joined04:54
nadavoid joined04:57
Samual joined05:02
dotnull left05:02
lonewulf` left05:10
beautifulmind left05:11
guampa left05:11
cilly left05:11
edude03 left05:12
nadavoid left05:12
uu left05:13
cilly joined05:13
lonewulf` joined05:14
Chib joined05:14
unreal joined05:16
jwmann left05:17
dreiss joined05:18
binjured left05:21
muhoo left05:26
alexim left05:26
Orbitrix left05:27
tgunr I'm having a little trouble with an ignore pattern. I have several paths like "( Xcode Projects )/MartenEngineLibFFI/( Tester )/( build )/" that i would like to ignore if "( build )" is in the path. I have tried several variations of `*/\(\ build\ \)' but can't cant to get it to work.05:28
Orbitrix joined05:29
kevlarman tgunr: no need to escape (), but you do need to quote it if it has spaces05:31
tgunr backslash?05:32
agile left05:32
kevlarman no, quote05:33
dcarper1 left05:34
Platehead joined05:34
kevlarman actually \ might work too05:34
BonQuisha left05:34
Platehead left05:34
tgunr \ doesn't work05:34
BonQuisha joined05:34
kevlarman more likely your * doesn't work05:35
if you want to ignore all folders named "( build )", that should be your pattern05:36
or better yet, get rid of the horrible names05:36
linusoleander joined05:36
tgunr can't change the names unfortunately05:36
Fandekasp joined05:37
secoif joined05:37
secoif left05:37
tgunr duh, that worked, was trying too hard, thanks kevlarman05:38
secoif joined05:38
tgunr BTW< kevlar is one of my favorite materials, saved my butt once :)05:39
kevlarman normally i'd say rtfm05:39
but this particular one is a bit convoluted05:39
dorisabayon left05:40
tgunr yeah, i hate his naming conventions05:40
nadavoid joined05:42
bobdobbs joined05:43
tgunr I was thrown off by this also "A pattern containing shell globbing characters, such as an asterisk (*), is expanded as a shell glob pattern." presumed the need for leading *05:44
bobdobbs I've got a dir with a bunch of subdirs in it. All the subdirs contain cloned git projects. Mostly javascript libraries and extensions and whatnot05:44
Whats the most economical way to update all of them.05:45
Instead of, say, entering each dir one by one and issueing 'git pull'.05:45
tgunr might take a look at gitslave or gitsubtree05:46
bobdobbs cool. will check them out.05:46
thanks05:46
eletuchy left05:46
eletuchy joined05:47
nadavoid left05:47
eletuchy left05:53
shuffle2 why does git sometimes automatically create a merge commit when i'm on master and `git pull`, even if i have no changes?05:55
CareBear\ shuffle2 : your master has nothing to do with origin/master05:57
shuffle2 : being on master is not magical in any way05:57
shuffle2 : master is just like any other local branch05:57
kevlarman shuffle2: you probably do have changes05:58
shuffle2 no there are no changes05:58
CareBear\ shuffle2 : and a merge commit is created when your master can not be fast-forwarded to fetched commits05:58
kevlarman shuffle2: if you haven't done anything since that pull, it's pretty easy to figure out what they were05:58
CareBear\ look at the commit graphs and individual commits05:58
kevlarman ^or that05:59
shuffle2 i mean i can do git pull...<time passes, people commit to origin/master>...i pull again, and a merge commit is generated05:59
JustMozzy left05:59
shuffle2 no local changes05:59
Goplat shuffle2: probably your own "master" branch has committed changes that aren't on the remote and thus aren't in remote/origin/master05:59
CareBear\ now you're speculating05:59
look at what you have06:00
shuffle2 lol06:00
CareBear\ the actual commits you have, that is06:00
shuffle2 Goplat: no06:00
CareBear\ pastebin git log --graph06:00
shuffle2 i've already reset to HEAD~1 to fix it06:00
CareBear\ look in git reflog06:01
and run git log --graph on the merge commit06:01
shuffle2 http://pastie.org/private/18ego2u4v26lnypcppdi1w06:02
the git reflog says06:03
ded1263 HEAD@{3}: pull : Merge made by recursive.06:03
git show ded126345449b83133a048e340331279e5578992 lists no files06:04
CareBear\ are you running windows by any chance?06:05
edude03 joined06:05
shuffle2 yes, i have core.autocrlf=true globally06:05
CareBear\ that could play in06:05
shuffle2 i have a hunch that it's because people do things like this sometimes: http://code.google.com/p/dolphin-emu/source/detail?r=f9f9bb98700492f78558afa195f8be511c73f63606:05
kevlarman shuffle2: autocrlf=true is really dangerous06:06
shuffle2 uh huh06:06
i don't think it's related to this06:06
kevlarman shuffle2: you would probably notice in your diffs if it was06:06
shuffle2: but i'd still avoid it06:06
shuffle2 i think it's because people sometimes merge the wrong way somehow (like i just linked)06:07
CareBear\ "I tried to rebase but it didn't work"06:07
shuffle2 they merge master into feature branch, and then make the resulting branch master06:07
CareBear\ ok06:07
so they rewrite master06:07
shuffle2 honestly dunno how they do it :P06:07
CareBear\ that is equivalent to you having local changes06:07
=> you can not fast-forward06:08
shuffle2 would that be allowed to be pushed without -f?06:08
CareBear\ *shrug*06:08
shuffle2 i need some type of punishment for that behavior :p06:08
CareBear\ better to not let it into the repository in the first place06:08
shuffle2 moderating gcode-hosted projects isn't very nice06:09
rathma joined06:09
CareBear\ well, have fun with that :906:09
shuffle2 i mean, it's hard to do afaik06:09
CareBear\ I would never host at google06:09
so you're talking to the wrong person06:10
but maybe they can provide a Gerrit for you06:10
(for everyone)06:10
btanaka left06:10
Goplat` joined06:11
Goplat left06:11
shuffle2 wow gerrit sounds magical06:12
dzonder left06:12
avium left06:12
_W_ left06:13
nardev left06:13
rurufufuss left06:13
Gitzilla left06:13
heinrich5991 left06:13
jweinberg joined06:13
didlix joined06:13
baburdick joined06:14
spacebat joined06:14
Marquel left06:18
jayne left06:19
heinrich5991 joined06:19
koo4 left06:20
koo4 joined06:20
_Vi left06:24
Gitzilla joined06:25
GutenTag joined06:26
nardev joined06:26
_W_ joined06:26
amigojapan_ left06:26
rurufufuss joined06:26
GutenTag I just did a 'git add .' -- and there are about 18K files -- should I expect this to take a very long time? I've been waiting about 5 minutes for the operation to complete and it's still going. I'm under cygwin and on an 'older' computer.06:27
CareBear\ yes, it will take time06:29
GutenTag : especially if they are binary files06:29
SethRobertson Or larger than free memory06:30
CareBear\ or you are on windows06:30
or your hardware is old06:30
oh wait, you already said .. :p06:30
GutenTag LoL06:30
Ok, I'll be patient then. :)06:30
what is git doing when it add's a file?06:31
_W_ left06:31
SethRobertson checksums, compressing, copying06:31
GutenTag Ah.06:32
Oh, will "copies" of the files end up in the .git directory?06:32
CareBear\ yes06:32
GutenTag Aha. OK -- makes sense. Thanks.06:32
Carmivore left06:33
Carmivore joined06:34
_W_ joined06:34
brokenshakles left06:34
GutenTag So, my program is dependent on a bunch of external libraries (these 18K plus files, including their .jar files, documentation, etc..). I'm creating a separate repository for them to share with other team members from our actual source code. Is this good/common practice?06:34
CareBear\ no06:35
:)06:35
well, common I don't know06:35
but git isn't so good at that06:35
_Vi joined06:35
CareBear\ IMO you should only have your own code in your repo06:35
and manage dependencies with a package manager06:36
except Java doesn't have one :(06:36
GutenTag So, that's why I at least created a SEPARATE repo -- does that make the most sense?06:36
AmirBehzad joined06:37
SethRobertson GutenTag: That is pretty common. git-submodule or gitslave is often used for that. If it is your repo, then gitslave is less annoying, if non-standard06:37
joshsmith left06:37
brokenshakles joined06:38
SethRobertson You might want to split it up even further to prevent massive repos06:38
Another option is to use git-annex for those large binary files06:39
GutenTag SethRobertson: Thanks. I'm not familar with either; I'll google. Oh crap, it's worse than I thought, too. My lib directory is about 450M and about 28K files. Does that constitute a massive repo?06:40
dreiss left06:40
GutenTag We are using bitbucket at the moment, if that matters.06:40
SethRobertson I have a 1.7G one which I am not proud of06:40
I had to put special config options in to make it work06:41
quickly06:41
CareBear\ GutenTag : binary megabytes are bad06:41
:)06:41
caseymcg joined06:42
_Vi left06:42
GutenTag Should we not use git at all then to share our libraries? It still seems like one of the best options.06:42
CareBear\ I think something else would be better06:43
GutenTag my add . finally finished, now my commit is taking it's time. Can't wait to push. :)06:43
SethRobertson It is a tough issue. It is there and convenient, but not really designed for the purpose06:43
GutenTag I see.06:43
CareBear\ except it really isn't convenient06:43
with so much/binary data06:43
_Vi joined06:43
GutenTag It seems like it should be convenient enough, once every gets their initial copies. I don't /think/ it will grow that fast. (Of course, those are probably 'famous last words')06:44
bindaasomatic joined06:44
rphillipsGuest6616006:45
CareBear\ I would use a real package manager06:45
GutenTag I'm pushing now. I'll see how long it takes to push.06:45
CareBear\ du -s .git06:45
maybe -hs06:46
GutenTag CareBear\: Ok, I don't know about package manager, but it sounds like something I should look into, regardless, to make an informed decision.06:46
It said it had 14509 objects when I sent my push command.06:46
Do you have a recommendation for (Java) package managers? I'm not sure where to start.06:46
CareBear\ oh you're on windows yeah, no, no package manager in sight there06:46
the only instance so far I've seen it done halfway sanely is Gentoo Linux06:47
but unfortunately the world of java developers insist on shipping all dependencies in every package06:47
so the opposite of the scenario with a successful package manager06:48
_Vi left06:48
CareBear\ ..of course because there exist no useful deployment tools (package managers) for java06:48
small glitch in the portability06:48
sorry06:48
I really think java sucks in so many ways :p06:48
I will try to shut up now06:48
adamm left06:50
dreiss joined06:51
apok left06:52
Goplat` left06:53
avium joined06:53
Guest66160rphillips07:00
macRover joined07:00
Blaster joined07:02
Blaster Hey, I just deleted a whole directory from my working folder, and now when I type 'git status' a whole ton of deletions show up. Normally I'd type git rm <path> to delete those files from the repo, but since theres hundreds of deletions, is there a command I can execute to delete the whole directory from the index?07:03
CareBear\ git rm -r ?07:03
arvind_khadri joined07:04
Blaster perfect thanks07:04
CollinPDX left07:04
jayne joined07:06
_Vi joined07:09
Spockz` joined07:10
fermianyon left07:12
CollinPDX joined07:12
Blaster I have a bunch of files whos names went funny inside Git... They are now like %%E6^E66^E6665588%%results_detail_map.tpl.php07:15
anyone know why?07:15
amigojapan left07:15
mdel joined07:16
Fandekasp left07:18
drev1 left07:22
Marquel joined07:22
ipalaus_ joined07:25
koo4 left07:28
OOPMan joined07:29
delight joined07:29
ObseLeTe joined07:32
Vortex35 left07:32
Vortex34 joined07:33
Moult possible to ask for gitweb help in here?07:34
caseymcg left07:34
brokenshakles left07:35
caseymcg joined07:35
dhruvasagar left07:36
diegoviola left07:39
fairuz_ joined07:40
[RHQme]stringo0 left07:41
ThomasLocke joined07:46
madewokherd left07:46
__iron joined07:46
ASIRINeiluj joined07:47
umren joined07:47
marthinal joined07:48
brokenshakles joined07:50
_iron left07:50
surfdue left07:51
surfdue joined07:52
thebignoise left07:52
dreiss left07:52
OOPMan left07:54
ObseLeTe left07:57
ripero joined08:00
koo4 joined08:02
jason237 left08:02
Chillance left08:03
ripero I'm having troubles with the setup of mirroring through gitolite, is anybody familiar with it?08:04
break57382 joined08:05
Dave^| joined08:06
bemson joined08:07
bemson anyone know how to point to another repo in github? I see folders with green arrows in the file browser, and I'd like to do that instead of copying all the files into my repo08:07
sitaram ripero: !doesntwork08:07
gitinfo ripero: What happened? Did it fall asleep on your couch? Eat your homework? Destroy your hard drive? Is it making faces at you? Does it want more money? Is it sleeping with your best friend? Please be specific!08:07
psakrii joined08:07
bemson left08:11
brokenshakles left08:11
giallu joined08:11
Prasad joined08:12
delight left08:13
igotnolegs left08:14
caseymcg left08:17
lonewulf` left08:18
fayimora hey gys i just pushed something to my git repo but i wanna add more files to that commit..how do i do it?08:20
giallu left08:20
tizzotizzo-afk08:20
sitaram fayimora: are you the only person using the repo you pushed to? if there's *any* chance someone else may have pulled your last commit, this might not be a good idea08:21
fayimora no its just me08:21
none is using it08:21
toabctl joined08:22
fayimora how do you merge 2 commits into one?08:22
sitaram ok then 'git add new files; git commit --amend; git push -f'08:22
psakrii left08:22
fayimora cause i think i actually pushed to batches and it was supposed to be one08:22
*2 not to08:22
delight joined08:23
sitaram merging two commits into one: 'git rebase -i HEAD~3' then in the editor change the second 'pick' to 'squash' and save the file08:23
ripero sitaram: are "server keys" just regular keys (generated through ssh-keygen) available to the the gitolite user? imho, the manual is very clear about how to add the keys from other servers, but not on the meaning of "server keys" ( http://sitaramc.github.com/gitolite/mirrsetup.html )08:23
sitaram then in the *next* editor window that comes up edit the combined commit message how you like08:23
and save08:23
fayimora: ^ all that was for you08:23
fayimora sitaram: yeah.. when i ran the command, i got my last 5 commits08:24
sitaram ripero: they're not different from ssh angle; they're different in terms of how they get added to the authkeys file08:25
fayimora they all have pick, do i just change the last one to squash?08:25
sitaram ripero: the normal user keys get added with a 'command=' of /path/to/gl-auth-command08:25
fayimora: wait08:25
fayimora i have this -> pick 03cf60d Rename PostController to PostsController08:25
2 pick 98be1f5 Use RESTful routing08:25
3 pick 4d2af5e Fix resourceful behaviour of PostsController and associa ted views08:25
4 pick 31399c7 added comment functionality08:25
5 pick b3b46fb added comment functionality08:25
sitaram ripero: the server keys have a command= of /path/to/gl-mirror-shell08:26
fayimora sorry for the multiple post..nnot my doing.. i want to merge the last 2 on that list08:26
sitaram fayimora: please use a pastebin for anything more than 2-3 lines08:26
Moult left08:26
sitaram fayimora: and I did say "wait"; not "paste" ;-)08:26
fayimora sorry bout that08:26
sitaram fayimora: np; my message crossed yours :-)08:27
fayimora so should i still wait?08:27
rendar joined08:27
sitaram fayimora: not sure how you got last 5 if you did 'rebase -i HEAD~3'. please delete all the lines in the editor -- every single line -- then *save* and exit first08:27
fayimora: then try again with HEAD~2 instead of HEAD~3 (my mistake on that)08:28
fayimora yaay i got the last 2 now..so i change the last one to squash right?08:29
sitaram yes08:29
ripero1 joined08:30
ripero left08:30
sitaram then save it. You will get a new edit window that contains the combined commit message; edit that how you like and save that too. You're done.08:30
fayimora: note that this is a long winded way of squashing top two commits but more generic and preserves both commit messages for editing.08:31
fayimora sitaram: cool…thanks a lot08:31
uu joined08:31
whitman joined08:31
gitinfo set mode: +v08:32
ripero1 sorry, I got disconnected at 09:26:23, is there a log of the room somewhere?08:32
sitaram /topic08:32
hmm sorry; wait08:33
http://tinyurl.com/gitlog seems to work but is not in the /topic; no idea why08:33
ripero1 sitaram: thx08:34
sitaram: the difference in the authorized_keys is clear08:34
Fandekasp joined08:35
khmarbaise_ joined08:35
khmarbaise left08:35
khmarbaise_khmarbaise08:35
ripero1 sitaram: my point was that it's not that clear that where you have to put the private key08:35
sitaram guess?08:36
I'll be back in 10 min08:37
ripero1 ~gitoliteuser/.ssh/08:37
dorisabayon joined08:40
elena1986 joined08:40
Fandekasp left08:40
ObseLeTe joined08:41
lausi left08:42
lausi joined08:43
slide left08:43
sitaram yup; assuming that's your gitolite *server* userid08:45
ph^ joined08:45
sitaram (typically 'git' or perhaps 'gitolite' if you used an RPM or DEB install, but could be anything really)08:45
ripero1: ^08:46
yshh left08:46
[M]ax left08:46
ripero1 sitaram: yep08:47
pidus joined08:48
guns joined08:48
arvind_khadri left08:49
ripero1 sitaram: just that "ssh" + "server" has a tendency to make one think in /etc/ssh (at least that was my first thought, which I of course discarded)08:49
[M]ax joined08:49
ripero1 sitaram: I would kindly suggest adding a few words to the manual explanation, in the like of "Generate ssh keys on each machine + for the gitolite server user"08:51
kevwil joined08:51
ripero1 sitaram: and thank you very much for your help08:52
sitaram you're welcome!08:53
OOPMan joined08:53
delight left08:54
sitaram I used to jump at every complaint and change my docs, till I realised that everyone has a different perspective and English != perl08:54
not precise enough08:54
so now I will wait for more than one complaint before changing something ;-)08:54
ripero1 sitaram: ok :)08:54
sitaram since I'm here a lot of the time and on email, it should not be an issue08:55
ObseLeTe left08:55
macRover left08:55
ripero1 sitaram: that's really helpful, indeed08:55
IcePic ripero1: I can somewhat see sitarams point here also, gitolite is simply riding on top of ssh, so teaching ssh in all its gory details may not be optimal in those docs either. Getting some familiarity with ssh itself may sometimes be in order.08:56
ManDay joined08:56
sitaram well, one of the reasons I wrote gitolite was because the author of gitosis would not even reply to emails. I have *no* intention of becoming like that :)08:56
ManDay I'd like to find all objects which correspond to files '*.xyz', how would I do that?08:56
IcePic find . -name "*.xyz" ?08:56
rendar left08:57
ManDay Uhm, aren't objects stored as hashes?08:57
rendar joined08:58
koo4 left08:59
wilmoore left08:59
ripero1 sitaram: besides, you do know that gl-tool in Debian installs is only available through /usr/share/gitolite/gl-tool (not in any exec default path), don't you?08:59
sitaram ManDay: it's complex; you'll have to look at *every* leaf commit (commit not reachable from elsewhere) and run 'git log -- filename' on it with some format options to print the SHA, then from those SHAs you have to "git ls-tree"08:59
ripero1: sorry, I'm not really familiar with Debian09:00
wilmoore joined09:00
ManDay sitaram: Are you sure of that? Shouldn't there be some plumbing command that makes it easier?09:01
EyesIsServer left09:02
sitaram ManDay: maybe; it's the wrong time of day for most of the real experts so you get me :)09:02
OOPMan left09:02
ManDay Haha ;D09:02
Thank you sitaram :)09:03
koo4 joined09:04
sitaram np09:04
drizzd joined09:06
ripero1 sitaram: not that it's not a right place for the script, just wanted to point out that gl-setup is easily availabre from shell, but gl-tool will easily return a "command-not-found" error09:06
EyesIsServer joined09:07
sitaram ripero1: it's *not* the right place for the script if you ask me09:08
lonewulf` joined09:08
sitaram ManDay: what's the reason you need this? (Could be an X-Y problem you know...)09:10
glcrazy joined09:11
ripero1 sitaram: I am not really familiar with right places and Debian packaging, probably rhonda (the Debian maintainer) can help09:11
tango_ ManDay: the hashes of the objects are the hashes of the content, and they are not really associated with any particular file _name_09:12
ManDay: so the only way to get which objects have had a given filename in their history is by ls-treeing all possible trees09:12
sitaram ManDay: for example, if you were wanting to *remove* a sensitive file from the repo, and that is why you're asking, there are other answers... (git filter-branch)09:13
kevwil left09:17
LongBeach left09:18
ManDay tango_: sitaram: Thanks, yes, I know filter-branch. I was rather curious about listing them. My problem is that I did not properly .gitignore some files and I wonder where and when they were involved.09:21
lapistano left09:23
lapistano joined09:23
sitaram ManDay: should be sufficient to find them in all visible refs then; no need to go digging in reflog, lost-and-found, etc.09:24
whyking joined09:26
FernandoBasso joined09:26
break57382 left09:26
Prasad left09:30
sattu94 joined09:32
Silowyi left09:33
sitaram ManDay: hah!09:33
got it09:33
cli joined09:35
sitaram git log --raw --abbrev=40 --format=%n --all -- path/to/file | egrep -o '[a-f0-9]{40}' | sort -u09:37
cli left09:37
ripero1 left09:38
__cli joined09:39
stodan joined09:39
ManDay sitaram: I think this only tracks the history of a file.09:40
It doesn't allow globbing all files of ending *.xyz in the history09:40
sitaram ManDay: oh I forgot you wanted a glob09:40
hmm09:40
Chib left09:40
sitaram seems to work if you put the glob in quotes09:41
_Vi left09:42
ManDay Well yeah, if those files are in the current working tree09:44
but lets say there HAD been a file called a.xzy which I deleted 10 commits ago09:45
khmarbaise left09:45
aruetten joined09:45
glcrazy left09:45
aruetten left09:45
sitaram I dont think it needs to be in the work tree09:46
nope; works fine09:46
ManDay nope09:47
I'm 95% certain that there had been days when I had abx.xyz commited, but when I do what you said with '*.xyz' nothing comes up09:48
sitaram then it's not in any ref that's *reachable* now; maybe went into reflog or even beyond09:48
cccaldas joined09:49
ManDay What do you mean it went into reflog?09:49
sitaram see the "--all" in my command? that means all branches/tags/remote-refs right?09:50
ManDay Yes09:51
sitaram now do you know what 'git commit --amend' does?09:51
ManDay Yes09:52
sitaram right. Now what happens to the commit that *used* to be at HEAD?09:52
ManDay what?09:52
sitaram it's not reachable by "--all" anymore09:52
break57382 joined09:52
ManDay I thought it were discarded09:52
Besides, what does that have to do with reflog?09:52
sitaram well yeah, but you can get it back. Limited offer, 30 days only09:53
operators are standing by. Call now09:53
Sigma joined09:53
sitaram damn, wrong window ;-)09:53
ManDay Wait, whom am I calling? I WANT THAT LIMITED OFFER!09:54
sitaram 1-800-git-log-g :-)09:56
jokes apart, "git log -g" shows you the reflog. See the last section of http://sitaramc.github.com/gcs/index.html for some details on reflog but it's ideal to read the whole thing to understand it09:56
meanwhile, try this09:56
the command I gave you? add "-g" right after the "log"09:56
and see if your files show up09:56
cilly left10:02
gusnan joined10:03
arvind_khadri joined10:03
arvind_khadri left10:03
arvind_khadri joined10:03
edude03 left10:04
ManDay My files?10:05
Ok10:06
Look10:06
How does the reflog work? Apparently, it can't be derived from the trees, can it?!10:06
gavin_huang left10:06
CareBear\ it can not10:07
it is a simple append only log of commits that are created10:07
sitaram ManDay: did they show up? those *.xyz files?10:07
ManDay CareBear\: So it's created and maintained separately of the rest of git?10:09
CareBear\ yes10:10
ManDay sitaram: Show up where?10:10
Thanks CareBear\10:10
elena1986 left10:10
unmanbearpig joined10:11
__cli left10:11
arvind_khadri left10:11
cccaldas left10:11
sebrock joined10:11
sitaram in this command: git log -g --raw --abbrev=40 --format=%n --all -- "*.xyz"10:11
nixmaniack joined10:12
ManDay sitaram: No.10:12
sitaram then you dont have them in your repo10:12
nixmaniack left10:14
arvind_khadri joined10:14
arvind_khadri left10:14
arvind_khadri joined10:14
ManDay Hm, you are perhaps right... I just checked on of the commits where I thought I had them in, nothing there.10:15
there are all sorts of 95% ...10:15
__cli joined10:15
__cli left10:16
__cli joined10:17
ManDay No10:18
Here, I found a commit in which is a file abc.xyz10:18
sitaram.10:18
I told you, that command does not account for files in history. It only shows the history of a file currently in the WD10:19
Bartzy joined10:20
sitaram ManDay: no. If yo u don't want to listen thats ok; but I have tested it with files *not* in the WD10:20
ManDay git log --raw -g --abbrev=40 --format=%n --all -- '*.cgns'10:23
And I have tested it, too.10:23
And for me it doesn't work.10:23
But if you don't want to listen, that's ok. Let's just both not listen to eachother.10:23
flavius joined10:24
sitaram ManDay: complete transcript of a test; empty directory, from scratch: http://dpaste.org/P3amk/10:24
ManDay That's most likely because you got commits dedicated to those files.10:25
I can give you a log from me, too10:26
sitaram what do you mean "commits dedicated to those files"?10:26
a commit in which only that file is committed? That doesnt make a difference to git10:27
dvide left10:28
schnatta joined10:29
jameslord i need a mailinglist to post my question:(10:29
give me one10:29
disappea_ left10:30
xerora left10:32
churp joined10:32
guns left10:32
airborn joined10:32
disappea_ joined10:32
sitaram ManDay: in case that's what you meant, try this: http://dpaste.org/IbVLm/10:33
ManDay sitaram: http://pastebin.com/TQAtNx0S10:33
sitaram temp copy of my gitolite repo, blow away everything, and see what the commands get you10:33
Tommy[D] left10:33
ManDay try for yourself10:33
Akufen joined10:34
giallu joined10:35
Tommy[D] joined10:36
sitaram take out the --all if you use -g10:37
they're not mutually compatible10:37
I probably didn't say that clearly, sorry10:38
ManDay Still nothing.10:38
thebignoise joined10:38
sitaram I got the output10:38
http://dpaste.org/n07kH/10:39
krz joined10:39
ManDay goto onto origin/2d-base and try from there10:39
git log --raw -g --abbrev=40 --format=%n -- '*.cgns'10:39
gives me nothing on 2d-base10:39
tomislater joined10:40
sitaram view http://dpaste.org/7zhT6/raw/10:40
whats your git version?10:40
ManDay git version 1.7.3.410:41
sitaram ok... is this OSX or Windows?10:41
ManDay neither?!10:41
sitaram then I dont know. My git is much newer but I dont see this as being recent10:41
ManDay whats your v?10:41
sitaram 1.7.7.410:42
tewecske joined10:42
sitaram wait I have a much older one at work lemme log on and try10:42
1.7.4.4 damn... not *much* older10:42
ManDay Wait... 7.4 isn't "much older" than 7.7 but 7.3 is?10:43
Logaritmic scale where needs be, eh10:43
:P10:43
sitaram damn10:44
it doesnt work on 1.7.4.410:44
ManDay Why "damn"? That's good10:44
Now we know that it was a bug that must have been fixed.10:44
At least that's a plasuible explanation10:44
sitaram ManDay: yeah true... /me tries to look for release notes10:45
ManDay Thank you sitaram :)10:46
sitaram found it -- 1.7.510:47
arvind_khadri left10:47
shruggar joined10:47
ManDay saying?10:47
sitaram oh well. Sorry for being a little short. I did not think this was somehow "new" and thought I'd done it before, so until we *really* tested it, I never thought it could be a version difference10:47
wait lemme paste10:48
jceb joined10:48
sitaram line 71 of http://dpaste.org/ZwUP5/ (1.7.5 relnotes)10:48
ManDay ah10:49
ipalaus_ left10:50
linusoleander left10:51
Boris` joined10:55
Boris` left10:55
glcrazy joined10:55
jameslord i git clone from a remote repo, then made changes to it on pc A , but have not push it to serer yet, then i copy a local repo to another machine B, after that i push push the change to server on PC B, then i come back to pc a, it still in a not push stage, should i push for a second time?10:56
but this will generate unnecessary log, and in fact push nothing to server10:57
what should i do?10:57
cmn you don't need to do anything, the change is in the server already10:59
do a fetch if you want to update the repo's idea of what's in the remtoe10:59
apok joined11:01
jameslord how to know if the local repo is the same as the remote repo?11:01
aro why is my commit to my repo hanging when i do 'git add .'11:02
giallu left11:03
ManDay jameslord: by running git fetch11:04
jameslord git fetch will tell me if local repo is the same as remote repo11:04
11:04
giallu joined11:05
ManDay 11:05
cmn git fetch will update your repo's idea of what's in the remote11:05
aro i dunno whats going on, it just isnt doing anything11:05
cmn aro: are those files very large?11:05
ManDay cmn: Why would it matter?11:05
cmn jameslord: if you don't want to download the new commits, ls-remote will tell you the state of the branches on the remote11:06
ManDay: IIRC git add is the one responsible for creating the blobs11:06
and large files have never been git's forte11:06
so if the file is large (esp. compared to the RAM), git add will take a long time11:07
jameslord there is no ls option when use git remote11:07
faber joined11:07
cmn ls-remote11:07
ManDay cmn: Does git add even care about the file's contents?11:07
cesc joined11:07
cmn yes11:07
it needs to create the blob11:07
ManDay Ah, yes11:08
churp left11:08
FernandoBasso left11:11
fayimora left11:14
fayimora joined11:14
jameslord hi11:15
jameslord left11:15
jameslord joined11:15
iocor joined11:15
dangerousdave joined11:15
glcrazy left11:17
jameslord hi11:18
cmn !hi11:18
gitinfo [!welcome] Welcome to this channel. Go ahead and ask your question. Very few people are responding to greetings, but will respond if a question is asked.11:18
jameslord http://paste.ubuntu.com/795870/11:19
what this means11:19
FernandoBasso joined11:19
Cromulent joined11:19
jameslord two sha is the same:(11:19
cbreak so?11:20
glcrazy joined11:20
cbreak just means that master is "checked out"11:20
cyfi joined11:21
cmn it's a list of branches11:21
and in this case, master is the default branch for that repository11:22
khmarbaise joined11:23
canton7 joined11:23
ASIRINeiluj left11:23
Textmode joined11:25
brian_g joined11:26
Cs-hard joined11:27
giallu left11:27
Cs-hard left11:27
giallu joined11:28
psoo joined11:28
glcrazy left11:29
robotmay joined11:33
nixmaniack joined11:36
j416 joined11:37
Fandekasp joined11:37
marthinal left11:40
ganesh_ariveguru joined11:40
dorisabayon left11:41
Cromulent left11:44
glcrazy joined11:45
glcrazy left11:46
glcrazy joined11:47
kermit left11:47
fairuz_ left11:47
kermit joined11:48
glcrazy left11:51
bigkm joined11:51
glcrazy joined11:52
fayimora left11:54
toabctl left11:56
glcrazy left11:57
glcrazy_ joined11:58
Dave^|| joined11:59
yibe joined12:00
Dave^| left12:02
ngulden joined12:04
nax joined12:08
nax left12:08
glcrazy__ joined12:08
d0k joined12:10
glcrazy_ left12:11
EugeneKay Good morning, gits!12:16
glcrazy__ left12:16
sitaram !hi12:17
gitinfo [!welcome] Welcome to this channel. Go ahead and ask your question. Very few people are responding to greetings, but will respond if a question is asked.12:17
sitaram couldn't resist ;-)12:17
EugeneKay At leasst somebody is sociable.12:17
sitaram easy when the bot is doing all the work ;-)12:17
ManDay I will respond to a greeting!12:18
Hello and welcome EugeneKay !12:18
canton7 i'm impressed that the bot picked up on ! hi... good work!12:19
EugeneKay I think that means jast implemented the aliases I asked about.12:19
canton7 ah, it has aliases12:20
haha, nice12:20
EugeneKay !triggers12:20
gitinfo See http://jk.gs/git/bot/trigger.php12:20
EugeneKay Yup. Nifty.12:20
sitaram yeah I think hi and hello were the first aliase (to welcome)12:21
aliases*12:21
LongBeach joined12:21
ManDay !pizza12:21
gitinfo DOUGH -- 200 g saw dust, 800 g flour, 590 millichopins water, 40 g yeast, 1 pinch of salt, 1 tbsp olive oil, 1 tbsp camphor. SAUCE -- 1 can minced tomatoes, 118 millichopins petroleum ether, 50 g laburnum (dried), 50 g repulsion gel, salt/pepper. TOPPINGS -- fish-shaped sediment, 100 g zombie flesh, 20 g rhubarb, 200 g cheese. Bake at 130 °Rø for 103.97 Sothic nanocycles. Enjoy!12:21
Shusshu joined12:21
preflex left12:21
canton7 glad that's still around :)12:21
sitaram yeah that one's nice too, though I like ! doesntwork best12:22
ManDay you mean12:22
!work12:22
gitinfo Sorry to hear it doesn't work. What did you want it to do? What happened instead? Did you get any error messages?12:22
ManDay :P12:22
sitaram !doesntwork12:22
gitinfo What happened? Did it fall asleep on your couch? Eat your homework? Destroy your hard drive? Is it making faces at you? Does it want more money? Is it sleeping with your best friend? Please be specific!12:22
preflex joined12:22
ManDay Oh :)12:22
snearch joined12:24
sitaram whoever wrote that deserves a pizza12:24
or beer12:24
hmm.... why is this text called "fortune"? !fortune12:28
gitinfo I'm sorry that you are stupid, ugly, and not using git. Still, some misguided souls think that something other than git might be better for them. Who knows, it might even be true for you. In any case, we don't care. Good-bye.12:28
sitaram doesn't get the connection12:28
apok left12:29
cmn seeking fortune somewhere else maybe?12:30
IcePic "fortune" is the old name for the "give me a randomized text from a file with mostly witty sayings" if that is a hint.12:31
cmn old name? fortune still exists12:31
canton7 incidentally, having proper fortunes in gitinfo would be awesome for those slow days12:32
IcePic, which in turn comes from fortune cookies? Or is it the other way around?12:32
cbreak fortune cookies are just a specific means to deliver fortunes12:32
sitaram IcePic: yeah but this one doesn't change12:33
cbreak there are others, like overpriced "premium" phone numbers or archaic unix services12:33
EugeneKay I'd like to see a !vend tied to http://itvends.com12:33
cbreak !blend?12:34
IcePic canton7: the first would be right, I gather12:34
fortunes as commit messages if the user doesnt supply one. =)12:34
"Man who kisses blowfish gets free lip piercing"12:35
cbreak that sounds... evil.12:35
canton7 fortune | cowsay is probably my favourite linux tool combination12:36
linusoleander joined12:37
vdv joined12:38
canton7 left12:39
flavius left12:39
nikuyoshi joined12:41
munichlinux joined12:42
Mikachu fortune | cowsay | figlet12:43
schnatta left12:43
linusoleander left12:43
cbreak OS X has a command line tool "say". It's great. :)12:43
you can make the computer of your little sister talk to her via ssh :)12:44
... not that I would ever do that...12:44
EugeneKay git config commity.empty=true|false|fortune12:45
-y12:45
QaDeS joined12:45
Cromulent joined12:46
j416 lol12:46
schnatta joined12:49
wilmoore left12:49
Cromulent left12:51
sudoquai joined12:51
matjas cbreak: https://github.com/mathiasbynens/dotfiles/blob/master/.aliases#L88-91 not that I would ever use any of those…12:51
Jackneill joined12:51
Jackneill left12:52
Jackneill joined12:52
ripero joined12:53
break57382 left12:53
cbreak naturally... :)12:54
ripero left12:54
ripero joined12:54
ripero left12:57
spaceonline joined12:58
Chib joined13:02
dangerousdave left13:03
ganesh_ariveguru left13:05
NiklasFiekas joined13:06
EugeneKay matjas - one alias I use a bunch is cdc='cd && clear'13:07
ganesh_ariveguru joined13:07
Spockz joined13:11
Spockz left13:11
ikpL joined13:11
ikpL Hello Everyone, I want to learn about git13:11
what is the best book for git13:11
cmn !book13:12
gitinfo 'Pro Git' is a complete book about git that is available online for free (there's a print version, too): http://progit.org/book/13:12
ikpL great thanx gitinfo13:12
break57382 joined13:13
cbreak the bots! they steal our jobs!13:14
Spockz joined13:14
vdv left13:15
NiklasFiekas :D13:15
ikpL is gitinfo a bot ?13:15
FauxFaux We should lynch that jsat guy.13:15
NiklasFiekas yep. and cmn made him say that with "!book"13:15
cmn !gitinfo13:15
gitinfo I am an IRC bot which responds to certain keywords to provide helpful(?) information to humans. Please see http://jk.gs/git/bot for more information about how to use me.13:15
ganesh_ariveguru left13:16
gusnan left13:16
ganesh_ariveguru joined13:17
ganesh_ariveguru left13:17
ikpL Also I am a noob to IRC, I didn't know that13:19
_ikke_ Bots are quite common on IRC13:19
wereHamster you're yourself one, _ikke_, admit it!13:19
cbreak basic infrastructure :)13:20
_ikke_ wereHamster: Bots are quite common on IRC13:20
ikpL bots useful13:20
psoo left13:21
_ikke_ wereHamster: Calling me a bot is an insult to my intelligence and sophistication13:21
wereHamster we have a smart bot here, he could even pass the turing test :)13:22
_ikke_ How may I help you13:23
sebrock left13:24
cbreak I am not a robot, I am a unicorn13:24
EugeneKay ikpL - if you want an intro to Version Control Systems in general, I found "Version Control by Example" to be a good text. It's free at http://www.ericsink.com/vcbe13:26
schnatta left13:26
j416 matjas: scary 'undopush' you have there :)13:26
fayimora joined13:27
ikpL left13:29
nicoulaj joined13:31
lonewulf` left13:32
LeMike joined13:37
gitinfo set mode: +v13:38
selevt joined13:39
LeMike hi there. i like to use git as a backup-system. so I have a external hd which shall be the "master" and a usb stick containing the last 100 revisions. first: how do i clone only the last 100 revs?13:39
EugeneKay !backup13:39
gitinfo Taking a backup of a git repository is always a good idea before doing something unusual (well, it is an excellent idea as a matter of course). Usually, the best way to TACTICALLY back up a git repo is `git clone --mirror`. However, some unusual maintenance might require `tar cf repo-backup.tar repodir`. Testing in a clone is also an excellent idea.13:39
EugeneKay You really can't clone "the last X revisions" because any revision is dependent upon all parent revisions.13:39
(and that trigger isn't what i thought it was.... hrm)13:40
Mikachu you can, git clone --depth=9913:40
cmn to grab only the last 100 revisions, --depth 99 should work, almost13:40
but that kinda depends on what you consider "last"13:40
--depth will grab that amount on each branch13:40
and you can't tell a priori what the last 100 revs are by date13:41
EugeneKay That's a shallow clone, innit? With different SHAs13:41
cmn it's a shallow clone, but you get the same shas13:41
the earliest commit is a lie, though13:41
EugeneKay Ah, it doesn't do push/pull.13:42
cmn it's put there with a graft or a replacement or some such13:42
EugeneKay Cuz the chain of SHAs is broken13:42
cmn you kinda can, but it's not always obvious when you can push13:42
fetching should work, no probls13:42
well, mostly13:42
cbreak LeMike: go look at bup or a real backup tool13:43
EugeneKay But anyway. Git is not a backup tool.13:43
cbreak git on its own does not support proper history pruning13:43
things like --depth are inadequate replacements since they prevent you from validating repo integrity13:43
also, git has quite some problems with big binary files, which bup tries to solve13:44
Mikachu shallow clones predate grafts and replacements, iirc13:44
ASIRINeiluj joined13:44
neurodrone joined13:45
LeMike it's just small files non-binary. at weekends I like to pull / sync the stick on the hd. that's possible via sync / pull, too?13:46
Cromulent joined13:46
cbreak don't bother with history pruning then :)13:46
EugeneKay Sure, but your repo will continuously grow.13:46
LeMike that's okay. it wont grow that big13:47
_ikke_ CLI version of github issues: https://github.com/vesln/issues13:48
LeMike i will try that on two pc's now. thanks so far ;) btw: it was svn all the time and I have my history since ages ;D but now I fell in love with git.13:49
uu left13:49
EugeneKay _ikke_ - "Requires: node.js"13:50
shruggar left13:51
_ikke_ EugeneKay: Saw that afterwards13:51
EugeneKay I'm not really sure wtf the architecture of that thing is13:52
But if it requires node.js to make an API call against Github..... urdoinitrong13:52
That's the sort of thing thats implementable in bash. Or perl.13:52
_ikke_ EugeneKay: Yup13:53
or python13:53
or any other language13:53
EugeneKay I know there's a bash library for JSON, which is what the github v3 api is.13:53
Mikachu network programmin in shell script, no thanks13:54
Octalot left13:54
EugeneKay Mikachu - it's not even network programming, it's doable with curl13:54
Mikachu how is that not network? :)13:54
EugeneKay It's REST, not TCP stack.13:54
cmn hm, if shallow clones predate grafts and replacements, then I've no idea how the hell they're lying to the DAG13:55
gusnan joined13:55
DarkAR joined13:56
EugeneKay Poke about in git.git ;-)13:56
Mikachu hm, maybe they don't predate grafts, but they have explicit support13:56
eijk joined13:56
Mikachu Documentation/technical/shallow.txt13:56
k299 joined13:57
cbreak javascript?13:57
gavin_huang joined13:57
k299 left13:57
cmn it's what the cool kids are using nowadays instead of bash, apparently13:57
Mikachu "Programs are written in JavaScript, using event-driven, asynchronous I/O to minimize overhead" says wikipedia about node.js13:57
ipalaus_ joined13:57
Mikachu which seems like an oxymoron, but whatever ;)13:57
lonewulf` joined13:58
wereHamster Mikachu: why oxymoron?13:58
k299 joined13:58
Mikachu javascript + minimize overhead13:58
_ikke_ Mikachu: Language != implementation13:58
cmn the interpreters are pretty good nowadays, v8 (and thus node.js) has JIT13:58
k299 left13:58
Mikachu afaik, it's still not possible to make more advanced programs in current javascript than you could run on a real computer 15 years ago?13:59
wereHamster Mikachu: define 'advanced'13:59
k299 joined13:59
Dynom git man13:59
_ikke_ man git13:59
gitinfo the git manpage is available at http://jk.gs/git.html13:59
cmn for advanced in what way? you can do pretty man anything with js13:59
erichynds joined13:59
Dynom thanks gitinfo13:59
cbreak cmn: mostly malware and fluff14:00
thanks to the dumbest idea of web 2.0: downloading and executing code via untrusted networks14:00
and even more, from untrusted sources14:00
Mikachu "dumbest idea of web 2.0", now moving from oxymorons to tautologies :P14:00
cbreak and even more, even trusted sources embed untrusted sources for Advertisement14:00
cmn you mean you don't trust my website that promises you can win an iPad 3 if you just click on that little linik?14:01
link*14:01
cbreak java script reliance is even worse than abusing an inherent stateless pull protocol like http for interactive applications...14:01
wereHamster cbreak: so I take you download html pages with netcat and view them with ed, right?14:01
cbreak wereHamster: no. I download html pages and view them in a web browser...14:02
I don't just execute the code embedded in those pages14:02
EugeneKay Use node.js and MongoDB for web scale14:02
cbreak why bother?14:02
EugeneKay Because it's eb scale14:03
cbreak Firefox can scale web pages without that14:03
EugeneKay http://youtu.be/b2F-DItXtZs14:03
cbreak can't understand belgian14:03
cbreak flemish?14:03
or french I guess14:03
giallu left14:03
jast everybody needs more web scale14:03
even the web isn't web scale enough14:04
if only they used node.js for the web, it would all be different14:04
_ikke_ /dev/null db is webscale14:04
jast oh yes14:05
I store all of my data in it14:05
_ikke_ I put my back-ups in there14:05
linusoleander joined14:05
crisp joined14:06
cmn the graphs are more interesting with the /dev/urandom db14:08
linusoleander left14:09
EugeneKay Backup with 'dd if=/dev/sda1 of=/dev/null bs=1M'14:09
The null device is unlimited in size, and very fast, so your backups will be there instantly.14:09
jast cool, I gotta try that14:09
cbreak you should use /dev/random14:10
higher chance for getting the data back out14:10
_ikke_ Who wants to get his data back out?14:10
jast hmm, 48 MB/s14:10
cbreak that's kind of the point of backups14:10
jast that's not actually very fast14:10
__cli left14:10
EugeneKay On a serious note, while I understand the rationale behind projects like Node.js(asynchronous I/O+callbacks to handle more clients simultaneously by forking off the I/O blocking), I can't for the life of me figure out why in the turd they used JS.14:11
I mean, wtf?14:11
jast because JS is web scale14:11
the goal was to appeal to web developers, I guess14:11
because any serious developer would have realized straight away that Node.js is nothing special at all ;)14:11
EugeneKay 'Web developers' are usually..... what's the word I'm after.14:11
cmn js represents a low barrier of entry14:11
they're excitable14:12
jast EugeneKay: "not developers"? :}14:12
two words, though14:12
IcePic isnt js one of the more portable languages there is right now?14:12
jast it's not particularly more portable than other languages14:12
EugeneKay In the same sense that C is portable14:12
cmn no, C runs on more machines14:12
jast the main thing about JS is that it has no standard library14:12
it's easy to port something without a standard library14:12
cbreak take a look at Lua14:13
jast by default, all you've got is the language, with no way to do anything like I/O14:13
cbreak it's actually well designed, extremely easy to embed, and fast14:13
jast I don't like lua, for reasons I'm not completely sure about14:13
cbreak maybe one of the fastest scripting languages out there14:14
(thanks to LuaJIT)14:14
mandric joined14:14
matjas j416: re:undopush, yes, very scary… but i sometimes need it. is there a better way to do it?14:14
Mikachu EugeneKay: in episode 2 it is revealed the author actually thinks php is good14:14
jast I have fairly specific requirements of a new language that I'd be willing to learn14:14
EugeneKay "PHP is a hell of a drug."14:15
j416 matjas: well the problem is, what if your remote is not 'origin' and you want to undopush a branch that is not 'master'?14:15
jast one of them is: static typing with type inference (and optional type annotations)14:15
j416 matjas: if you're not careful, you'll force-push something else to the master branch of origin14:15
EugeneKay I rather like PHP, as a website language. It's a lot more webfriendly than perl.14:15
jast I do quick one-off stuff in PHP14:15
matjas j416: true14:15
j416 :)14:16
swombat left14:16
jast such as the web interface for the bot :)14:16
tshauck joined14:16
jast but all of the backend stuff is actually done by the bot14:16
Mikachu every time i look up anything in php, it looks like they made it that specific way only to make it easy to get wrong and produce exploits14:16
j416 jast: what language is the bot in?14:16
jast via a control connection14:16
perl14:16
cbreak jast: Lua has strong typing, but it types values and not variables14:16
j416 perl14:16
cbreak which is... interesting14:16
bremner cbreak: sure, but it means type-inference is pretty much impossible14:17
jast I've got my own plans for typ inference14:17
cbreak it's runtime14:17
(and manual)14:17
jast +e14:17
bremner that's not inference, that's just observation ;)14:17
jast unfortunately they're part of a rather big project and I'm not really making any progress on it14:17
stamina left14:17
cbreak well, my main language is C++14:17
probably one of the most strongest typed languages there is :)14:18
(and type names can span dozens of lines too!)14:18
jast so, my ideal language has static/strong typing and type inference14:18
and extensible syntax14:18
cbreak -> C++? :)14:18
jast C++ doesn't have type inference14:18
cbreak sure does14:18
jast example?14:18
cbreak I can create types from other types14:19
auto result = doStuff(input)14:19
jast type inference means I can write code without telling the compiler which type a variable is, and it automatically determines the type14:19
auto?14:19
neurodrone left14:19
cbreak yes14:19
jast is that like C++1x or something?14:20
cbreak template<typename T> void swap(T const & a, T const & b)14:20
yes14:20
jast well templates OTOH are an abomination :}14:20
cbreak generic programming is older though14:20
they are the essence of type inference14:20
you can infer the weirdest things14:21
hyperair joined14:21
jast C++ is too full of pitfalls (and abyssal ones at that) for my taste14:21
cbreak hey14:21
at most 50% of C++ is pitfalls14:21
and half of those is from C14:21
jast plus I hate the STL with a passion14:22
cbreak you don't have to use it :)14:22
jast and there isn't really any reasonable alternative to it14:22
cbreak unless you write code for sun14:22
jast (don't say boost)14:22
cbreak Qt14:22
jast yeah, Qt *is* an alternative14:22
cbreak boost :D14:22
jast but it's kind of heavy14:22
Qt is the main reason I'd consider using C++ at all14:22
cbreak well14:22
compare Qt to other things14:23
jast yeah, sure14:23
sattu94 left14:23
jast I liked the compilers that allowed me to link only those parts of a library that were actually needed by the program14:24
borland's newer pascal compilers, for instance14:24
rurufufuss left14:24
cbreak That's not as easy as it sounds14:25
DarkAR left14:25
NiklasFiekas left14:25
ngulden left14:25
tewecske left14:25
dr0id left14:25
spyro left14:25
warthog9 left14:25
moonlightcheese left14:25
frogonwheels left14:25
shachaf left14:25
basepi left14:25
dhoss left14:25
munro left14:25
borodon left14:25
ShooterMG left14:25
djh left14:25
Sinjo left14:25
CodeBlock left14:25
phaedrix left14:25
coopsh left14:25
tabakhase left14:25
xoebus left14:25
trodrigues left14:25
cYmen left14:25
Nilbus left14:25
project2501a left14:25
Zygo left14:25
htoothrot left14:25
aow left14:25
mikejw left14:25
Lisimba left14:25
sobel left14:25
tpope left14:25
sente left14:25
dhoss joined14:25
cmn gcc + ld can do that, or should be able to14:25
aspotashev joined14:25
cmn you tell gcc to keep blocks separate, and tell ld to discard unused code14:25
DarkAR joined14:25
ngulden joined14:25
tewecske joined14:25
dr0id joined14:25
spyro joined14:25
moonlightcheese joined14:25
frogonwheels joined14:25
shachaf joined14:25
munro joined14:25
borodon joined14:25
ShooterMG joined14:25
djh joined14:25
Sinjo joined14:25
mikejw joined14:25
coopsh joined14:25
tabakhase joined14:25
xoebus joined14:25
trodrigues joined14:25
cYmen joined14:25
project2501a joined14:25
Nilbus joined14:25
Zygo joined14:25
htoothrot joined14:25
tpope joined14:25
aow joined14:25
Lisimba joined14:25
sobel joined14:25
sente joined14:25
holmes.freenode.net set mode: +vv14:25
NiklasFiekas joined14:25
IcePic isnt it the default when linking against static libs?14:25
warthog9 joined14:25
dr0id left14:25
shachaf left14:25
phaedrix joined14:25
glcrazy joined14:25
sudoquai left14:25
shachaf joined14:26
basepi joined14:26
IcePic libfoo.a will contain a lot of .o files in a lump, then when you link, you pick out the ones needed to make your app work14:26
dr0id joined14:26
jast manually, right?14:26
cmn libfoo.a needs to have several sections, though14:26
jast I've never seen *any* project do that14:26
cmn I think we do this in libgit2 when you build the static library14:27
glcrazy left14:27
htoothrot left14:27
sudoquai joined14:28
frogonwheels left14:28
flaguy48 joined14:28
cbreak because C++ is an unmanaged language14:29
you can do the weirdest crap with it14:29
frogonwheels joined14:29
cmn I can't find it in the Makefile now, but we did play around with those options14:29
cbreak inside a library, you can do things like jump to code directly14:29
without going over exported symbols14:30
munichlinux left14:30
cbreak or sometimes even without doing PC relative jumps (which makes the code not position independent)14:30
htoothrot joined14:30
cbreak non-position-independent code is faster, but it doesn't play well with ASLR and similar tech14:30
and doesn't work in dynamic libs14:31
but appart from that, such jumps also make it extremely hard to find and eliminate dead code14:31
heoa joined14:31
glcrazy joined14:31
heoa sorry stupid question -- what was the debug/verbose mode in git?14:32
CodeBlock joined14:33
cbreak GIT_TRACE?14:33
well, or just -vv14:33
heoa cbreak: thank you.14:34
cbreak (they do different things)14:35
iocor left14:36
dorisabayon joined14:37
ramlev joined14:39
ramlev left14:39
flip_digits left14:40
Fandekasp left14:41
ramlev joined14:42
weeb1e joined14:42
jast .random14:42
gitinfo []14:42
jast well, that *is* random14:42
cbreak password generator:14:43
dd if=/dev/random bs=512 count=8 | openssl base6414:43
amigojapan joined14:44
cmn I wonder how many DBs would accept such a long password14:45
giallu joined14:45
cmn well, the long password only happens on /dev/urandom, my dd just gives up after a bit14:45
when I point it to /dev/random14:45
ramlev left14:45
ramlev joined14:45
cbreak that's the linux implementation of /dev/random14:46
ramlev left14:46
ramlev joined14:46
cbreak unlike the one in OS X, it blocks on lack-of-entropy14:46
xxthink left14:47
_ikke_ if you don't want to be blocked, use urandom14:47
jast .random14:48
gitinfo <cbreak> password generator: <cbreak> dd if=/dev/random bs=512 count=8 | openssl base64[2]14:48
IcePic watch out when using /dev/random on linux, since it may give you short reads.14:48
instead of blocking14:48
cbreak cmn: asking wether a DB supports such passwords is the wrong thing to ask14:50
cmn: unless you want to be a screwup like Sony or Stratfor and store Unhashed Passwords or Credit Card Numbers + Verification Codes :)14:50
IcePic cbreak: the fines from the PCI-DSS authorities should be insanely severe if you screw up like that14:51
cbreak well...14:52
we'll see :)14:52
I've not heard of stratfor in a few days14:52
wonder if they still exist14:52
brian_g left14:52
EdwardIII joined14:52
EdwardIII hey14:52
cbreak but it was even on the local (Swiss) radio news that they got compromised and lost CC Numbers14:52
CodeBlock left14:53
CodeBlock joined14:53
cbreak so any regulative organisation should know :)14:53
cmn good point, the DB should only store the hash14:53
jast all right, guys, feel free to add random factoids or nonsense to the .random db, using .random add foobar14:53
EdwardIII i'm using git svn. i've received a message to let me know upstream has made some changes, now i don't want to go ahead and rebase without a backup in case i break something14:53
cbreak .random add heads (chosen by fair coin flip)14:53
gitinfo cbreak: okay.14:53
jast EdwardIII: if your stuff is all committed, we can restore it even if the rebase goes awry14:53
EdwardIII if i do git diff remotes/trunk # i don't seem to see any changes14:53
cbreak .random add tails (chosen by fair coin flip)14:54
gitinfo cbreak: okay.14:54
cbreak EdwardIII: you have to do git svn fetch first14:54
EdwardIII jast: right - would i do that by running git reflog, figuring out which was the last commit before the rebase then doing a git reset hard?14:54
cbreak also, git svn rebase would still have the git reflog safety net14:54
jast EdwardIII: that's one way to do it, yeah14:54
EdwardIII cbreak: do git svn fetch,then git diff?14:54
cmn .random add 4 (chosen by fair die throw)14:54
gitinfo cmn: okay.14:54
EdwardIII not worth making a backup branch first?14:54
cbreak EdwardIII: sure.14:54
sure.14:55
will only cost you 4kb or so14:55
jast EdwardIII: you can make one if you like. it doesn't cost anything, right? :)14:55
cbreak (depending on your HD Cluster Size)14:55
EdwardIII heh14:55
or maybe a tag would be more sensible14:55
cbreak tags == branches14:55
in this respect14:55
EdwardIII right14:55
jast since it's temporary anyway, it doesn't matter14:55
EdwardIII well, it's probably a good time for me to tag now anyway (haven't made any tags yet)14:56
Cromulent left14:57
Cromulent joined14:57
amigojapan left14:57
EdwardIII git fetches14:57
EdwardIII * git svn fetch14:57
man, any git/svn stuff always seems to take an age heh14:57
jast that's because svn is slow :}14:58
EdwardIII heh14:58
glcrazy_ joined14:58
jast especially if you use its http transport14:58
giallu left14:58
Goplat joined14:58
EdwardIII i do14:59
jast almost everyone does14:59
EdwardIII i mostly use git svn for wordpress plugins i want to mess with14:59
cbreak git-svn isn't like normal svn that doesn't care about integrity15:00
or history15:00
and just fetches current state15:00
git-svn imports the whole history, so it uses way more data/interaction15:00
EdwardIII ah ha15:00
glcrazy left15:01
jast yeah, normally svn just fetches updates to all files. git-svn fetches the complete history (at least the parts it doesn't have yet)15:01
EdwardIII git has so many, many features15:01
cbreak svn server admins love people who do git svn clones :)15:01
EdwardIII sarcasm?15:02
jast nonono15:02
EdwardIII heh15:02
jast never :)15:02
cmn all that memory and processing power was just gonna sit there unused, we're helping15:02
EdwardIII hah15:02
despite git's complexity it does seem to do simple stuff better than svn though - ignoring files, for example15:03
ngulden left15:03
EdwardIII that always seemed like a big rigmarole with svn15:03
cbreak one of the groups I work with has an SVN Commit EMail hook to the whole group15:03
they also love when ever I git svn dcommit a bunch of new things...15:03
jast yeah, I remember when I was in a similar situation15:04
cbreak especially since I write good (-> Detailed and descriptive) commit messages15:04
jast nobody ever complained, though15:04
cbreak and I commit nicely and atomically15:04
Mikachu "stop working so much >_>"15:04
cbreak oh, I had someone say that he liked it15:04
marthinal joined15:04
cbreak he'd actually see what changed15:04
Cromulent left15:06
AmirBehzad left15:08
linusoleander joined15:08
ramlev left15:08
nicoulaj left15:09
berserkr joined15:11
EdwardIII whaddyaknow, upstream implemented the same thing i implemented downstream15:11
if i'd thought he would want it i'd have sent a patch...15:11
LeMike this is great -.- remote refusing to update checked out branch. i have a new clone and new pull, just changed one file. how could that be?15:12
drizzd left15:13
cmn because the reason is the checked-out branch15:13
doesn't matter what actually changed15:13
cbreak LeMike: don't push to non-bare repositories15:13
LeMike yee. what does that "non-bare" mean?15:14
cbreak LeMike: man gitglossary15:15
gitinfo LeMike: the gitglossary manpage is available at http://jk.gs/gitglossary.html15:15
LeMike: an explanation of bare and non-bare repositories can be found here: http://bare-vs-nonbare.gitrecipes.de/15:15
munichlinux joined15:16
mxweas joined15:17
ramlev joined15:17
ramlev left15:17
mxweas left15:18
ramlev joined15:18
Bartzy left15:19
ramlev left15:19
ramlev joined15:19
glcrazy_ left15:19
LeMike thanks cbreak. can I solve this by rebase to the .git folder or is a complete new clone / init needed?15:20
matsebc joined15:20
EdwardIII hrm what do you guys use for conflicts? 3 way vimdiff?15:20
cbreak rebase? nothing to do with that15:20
you have to change the server repo15:20
(the one you want to push to)15:20
or push to a branch that is not checked out in the current server repo15:20
EdwardIII: TextWrangler, a normal programmers text editor15:21
EdwardIII: but take a look at man git-merge-tool15:21
LeMike i ment something like: git remote add origin file:///.../.git15:21
EdwardIII cbreak: macalicious?15:21
cbreak or was that man git-mergetool?15:21
gitinfo the git-mergetool manpage is available at http://jk.gs/git-mergetool.html15:21
cbreak LeMike: no15:21
LeMike: that's not going to do anything15:22
LeMike damn. ok i read again.15:22
cmn LeMike: it's not the path that makes bar or non-bare15:22
LeMike it's up from the init15:22
mloskot joined15:23
mloskot left15:23
mloskot joined15:23
jameslord left15:27
glcrazy_ joined15:27
joshsmith joined15:27
glcrazy_ left15:29
vpopov joined15:30
glcrazy_ joined15:30
Chib left15:32
neurodrone joined15:32
jameslord joined15:32
Yuuhi joined15:32
tizzo-afktizzo15:34
glcrazy_ left15:35
yshh joined15:36
glcrazy_ joined15:36
Spockz` left15:37
tomislater left15:38
ramlev left15:38
ramlev joined15:39
psoo joined15:41
delight joined15:43
bigkm left15:45
glcrazy__ joined15:47
glcrazy_ left15:47
glcrazy_ joined15:49
cantoma joined15:49
glcrazy__ left15:52
sebrock joined15:57
munichlinux left15:57
glcrazy__ joined15:59
glcrazy__ left15:59
glcrazy_ left16:01
brian_g joined16:02
zxiest joined16:05
zxiest Hello :-)16:05
I would like to understand a little thing about git...16:05
eijk_ joined16:05
eijk left16:05
rgr joined16:05
zxiest Let's say I have the master branch, I branch and checkout B1, do some changes. Then, I switch back to master. When I branch and checkout B2, I get B1's files. Is there a way to branch from master?16:06
rgr how do I use git difftool to compare current version of a file and one X commits back?16:06
sitaram rgr: git difftool oldsha -- file # should work I think16:07
jast zxiest: if you never committed your changes, they are "floated" to other branches you check out (unless that's not possible, in which case checkout refuses to switch branches)16:07
jwmann joined16:07
rgr I dont want to use sha . just filename16:08
psoo left16:08
zxiest jast i did commit to B1 .. but I would like to branch from master16:08
rgr or ^ notation16:08
jast rgr: then say HEAD~X instead of the SHA16:08
if you want it to use a version X commits back, you have to tell it *somehow*, obviously16:08
it can't read X from your mind16:08
rgr so "git difftool file file~3 "?16:08
sitaram no16:08
gavin_huang left16:09
sitaram git difftool HEAD~3 -- file16:09
rgr obviously. I never mentioned it reading my mind.16:09
ah yes16:09
thanks16:09
jast zxiest: if you branched from master, the resulting branch should have the same files as master16:09
dr0id left16:10
sitaram zxiest: if you branched from master to B1, then committed on B1, then checkout master, then branch B2 from there, it *should* branch from master16:10
mkg7 joined16:10
rgr Is there a general consensus on best difftool/diff browser for linux based osen? p4merge is pretty nice.16:10
bremner kdiff3 is ok for a gui tool16:11
jameslord1 joined16:11
sitaram rgr: general consensus on subjective stuff is hard; I *love* kdiff316:11
rgr thanks16:11
bremner right. so sitaram and I have a consensus ;)16:11
sitaram indeed ;-)16:11
zxiest jast and sitaram thanks .. :-) .. I'll try again.. I must have done something wrong16:11
binjured joined16:11
binjured left16:11
jast I like kdiff3 too (though I'm not a big fan of having to load the KDE libs for something like that)16:11
bremner jast: you can get kdiff3 with only QT stuff16:12
sitaram yeah that is a pain; but it's a very nice tool -- lots of keyboard controls16:12
rgr well, Im aware that there will be the usual "my choice" but most semi sane people can generally point you awre from their faorite to one they know is more generally used or better for beginners ;)16:12
jast question is, can I get it without building it myself? :)16:12
rgr left16:12
bremner jast: on debian, yes16:12
sebrock left16:12
jast oh, neat16:12
jameslord left16:12
jast thanks for pointing that out16:12
sebrock joined16:13
bremner a pleasure. ;)16:13
sitaram bremner: does debian carry 2 kdiff3 packages then?16:13
tizzotizzo-afk16:13
jast yes16:13
kdiff3 and kdiff3-qt16:13
bremner just like evince and evince-gtk16:14
sitaram interesting...16:14
gusnan left16:14
jast now if only dpkg weren't so slow reading its database :\16:14
jeffisabelle joined16:15
mandric left16:16
tshauck left16:17
crisp left16:18
soulcake joined16:21
gavin_huang joined16:22
thomas_b left16:26
stodan left16:30
jeffisabelle left16:32
sp3ctr joined16:32
Sigma left16:32
p3rror joined16:34
brian_g left16:37
aspotashev left16:38
nikuyoshi left16:38
krz left16:38
krz joined16:38
krz left16:38
krz joined16:38
Destos joined16:39
nikuyoshi joined16:41
fermianyon joined16:42
Cromulent joined16:42
aspotashev joined16:43
FernandoBasso left16:43
notola joined16:43
brian_g joined16:43
mloskot left16:44
arvind_khadri joined16:45
arvind_khadri left16:45
arvind_khadri joined16:45
notola left16:45
Sigma joined16:46
mandric joined16:49
millerti joined16:49
mloskot joined16:50
nikuyoshi left16:52
mloskot left16:55
Carmivore left16:56
valtih joined16:56
gitinfo set mode: +v16:56
Carmivore joined16:56
DrHouse|TARDIS left16:57
valtih How do I commit to another branch? If I checkout then all my current changes are lost.16:57
delight left16:57
EdwardIII hrm sorry for this uberdaft question - in a 3 way merge, i get 'remote' and i get 'local' - but what's 'base'?16:58
Mikachu valtih: if you 'git checkout otherbranch', then your changes are carried across if possible, otherwise nothing happens16:59
valtih: if that happens, the safest way is to commit your changes, switch, cherrypick, then reset the first branch again16:59
jast EdwardIII: the most recent point after which the history of remote and local diverges16:59
i.e. the last time they were merged together17:00
EdwardIII hrm17:02
Araxia left17:02
diegoviola joined17:03
dreiss joined17:04
cbreak valtih: switch to an other branch and commit.17:05
matthiaskrgr left17:05
cbreak EdwardIII: man git-merge-base17:05
gitinfo EdwardIII: the git-merge-base manpage is available at http://jk.gs/git-merge-base.html17:05
EdwardIII thanks!17:06
vpopov left17:06
Araxia joined17:07
simplechat left17:07
aspotashev left17:08
millerti left17:09
madewokherd joined17:10
ISF_ left17:10
canton7 joined17:10
brian_g left17:12
break57382 left17:12
gusnan joined17:13
hwit joined17:15
vpopov joined17:15
soulcake left17:15
soulcake joined17:15
akosikeno joined17:16
stringoO joined17:18
brian_g joined17:19
DarkAR left17:19
ericm left17:20
ericm joined17:20
fisted left17:23
flavius joined17:24
LeMike how to "sync" two bare repos? major is a week old without any push and minor is up to date with lots of pushes17:24
antix joined17:24
cmn push or fetch17:26
all repos are equal (mostly)17:26
winferno joined17:27
cmn but if you have one repo that hardly gets updated, are you sure you need that repo?17:27
kerrick joined17:27
canton7 left17:28
heoa left17:29
adamm joined17:29
eletuchy joined17:31
stringoO left17:31
mjessome joined17:31
winferno left17:32
tewecske left17:33
tewecske joined17:33
tewecske left17:34
folsto joined17:34
LeMike yee its a child-father-grand-backup17:34
nikuyoshi joined17:35
SethRobertson I have a weird question. You have outstanding commits, you do a `git fetch` (without recording the refs or the number of outstanding commits first) and now you want to discover if the history of @{u} (or I guess any other branch from upstream) was rewritten, how can you do so?17:35
Programmaticly of course17:35
LeMike thanks cmn! push did it.17:36
tewecske joined17:36
pasky SethRobertson: git reflog origin/blabla?17:36
cmn I don't think git keeps reflogs for remote branches17:37
Fandekasp joined17:38
BonQuisha left17:38
wereHamster cmn: git keeps reflogs of all refs. Hence *ref*logs17:38
cmn though I wonder if core.logallrefupdates would cause git to do so even for fetch17:38
wereHamster otherwise it wold be named 'localbranchlogs' or something like that17:39
nikuyoshi left17:39
lacrymology joined17:39
BonQuisha joined17:39
Silowyi joined17:40
cmn true, but the manpage says "Reflog is a mechanism to record when the tip of branches are updated"17:40
stringoO joined17:40
dorisabayon left17:41
wereHamster cmn: and I guess you have no local repository where you could have run 'git reflog origin/master' to check for yourself?17:41
iocor joined17:41
Pieter_ joined17:42
SethRobertson Reflog message: fetch: forced-update17:43
cmn origin/master doesn't show anything here, but the branches that get updates do show it17:43
I think the bare repo not recording pushes threw me off about what gets logged17:43
wereHamster cmn: bare repos don't have reflogs by default17:44
cmn right, and I mixed up remotes and remote branches17:45
mishok13 joined17:46
SethRobertson It isn't necessarily trivial to see the list of all reflog entries for origin/* which were updated since the last fetch17:47
But still, this provides enough hints for my purposes17:48
thanks17:49
mjessome left17:49
flip_digits joined17:50
gusnan left17:52
unreal left17:53
stratwine joined17:54
mkg7 left17:54
shruggar joined17:54
aspotashev joined17:55
sp3ctr left17:55
sp3ctr joined17:56
adamm left17:56
adamm joined17:56
__cli joined17:57
unreal joined17:57
mandric left18:00
rmillerx joined18:01
eletuchy left18:03
edude03 joined18:03
kukks joined18:05
najam joined18:08
mxweas joined18:09
najam left18:11
o_ joined18:12
Fandekasp left18:12
brian_g left18:12
soulcake left18:14
akosikeno left18:15
stringoO left18:17
thedeeno left18:24
Octalot joined18:26
brian_g joined18:28
v0n joined18:29
Fooker22 joined18:29
Fooker22 left18:29
mxweas left18:30
FernandoBasso joined18:32
gusnan joined18:32
diegovio1a joined18:32
diegoviolaGuest2476918:32
diegovio1adiegoviola18:33
Guest24769 left18:33
ceej_ joined18:36
EricInBNE left18:37
unreal left18:38
unreal joined18:39
AmirBehzad joined18:40
wilmoore joined18:42
cesc left18:42
mbj joined18:42
VladGh joined18:43
mbj Is it a design limitation git archive cannot do an archive based on commit-id when using --remote=$myremoterepo ?18:43
Only symbolic names (refs) seem to be supported.18:43
wereHamster mbj: same limitation as in git fetch18:43
same reason for the limitation...18:44
mbj wereHamster: Will consult the git fetch limitation reason documentation. Thx.18:44
wereHamster I don't think it's documented.18:44
mbj So I have to ask about the reasons :D18:45
dangerousdave joined18:45
wereHamster so you can't fetch arbitrary commits18:45
mbj I have a use case where I need to archive arbitary commits (btw the workspace state at a specific arbitrary commit)18:46
Im not into git internals terminology, currently.18:47
wereHamster mbj: fetch, then create the archive18:47
rphillips left18:48
mbj When I read the sourcecode I just realized I have to flip the remote arg in builtin/upload-archive.c18:48
Samual left18:49
Samual joined18:49
mbj I'd like to avoid the creation of a local repository to fetch and archive. One step would be nicer.18:49
SethRobertson git was recently updated so that remote repos will refuse to create arbitrary archives, but instead only archives that have tags or branches pointing at them18:49
mbj SethRobertson: why?18:50
Maybe I doing something dump here :D18:50
SethRobertson Security. There may be commits that you don't want someone to access or are old or something18:50
cmn ssh into the machine where the repo is and run archive there18:51
SethRobertson You can change where a tag points to, but you cannot change the SHA that was published in print three years ago that someone tries to get18:51
mbj cmn: would be possible, but this does not work with restricted shells like gitolite or git-shell.18:52
tizzo-afktizzo18:52
mbj Maybe this behaviour should be configurable.18:52
SethRobertson Then clone (once) and archive (many times) from that clone18:52
mbj Or compile my own version. Thx for all your answers, will take your input into consideration!18:54
rphillips joined18:54
rphillips left18:54
rphillips joined18:54
legnaleurc joined18:54
cesc joined18:55
lacrymology left18:57
lacrymology joined18:59
legnaleurc left18:59
legnaleurc joined19:00
angelsl left19:00
fayimora left19:00
pidus left19:00
fayimora joined19:00
kogent left19:00
xiong I'm certain this is trivial but it's new to me. I've been using git for development of my own projects with success. Now I'm trying to help a new guy learn; and I'm encouraging him to use git and github to share his work.19:03
wulffeld joined19:04
aro left19:04
xiong So I have a local clone of his repo, for convenience; but I'm not sure whether to pull, or fetch, or what. I want to see all branches; but I don't much want to create a branch of my own. I'm just looking to see "over his shoulder".19:05
wereHamster git fetch19:05
ChanServ set mode: +v19:05
wereHamster then you can look at origin/??19:05
snearch left19:05
Octalot left19:05
xiong Yes. But still there is a local 'master' branch -- which doesn't correspond to any useful concept.19:06
wereHamster HEAD needs to point to something.19:06
and if you don't care about the working tree, create a bare clone19:07
xiong I should like my HEAD to point to my student's HEAD.19:07
wereHamster clone --mirror, if you want19:07
Textmode left19:08
xiong Ah. No, not bare; the purpose of cloning is so I can poke around in his tree and find mistakes or discern intent.19:08
avandenhoven joined19:08
gitinfo set mode: +v19:09
ceej_ceej19:09
linusoleander left19:09
wereHamster then make a clone, fetch, checkout whatever you want, inspect the tree.19:09
ignore the local branch master. Or use reset --hard instead of checkout.19:10
rphillips left19:11
xiong Yes, that's a rational statement: Just ignore it.19:11
break57382 joined19:11
jason237 joined19:12
xiong I have been doing detached checkouts on origin/work and origin/master; which is what I want.19:12
wereHamster xiong: here's an idea: git checkout HEAD^{}; git branch -D master;19:12
nixmaniack left19:13
break57382 left19:13
break57382 joined19:13
disappea_ left19:13
xiong Well, after thinking about it, I'm just going to shuffle my local 'master' down to the root of the whole tree to get it out of the way; and not worry about it.19:14
mxweas joined19:14
wereHamster 'down to the root of the whole tree'? what does that mean?19:14
mloskot joined19:14
LimeBlast joined19:15
xiong The root of the commit tree. The ancestor of all commits.19:15
'Initial commit.'19:15
wereHamster what would that solve?19:15
disappe__ joined19:15
xiong It would get it out of my way, that's all.19:15
shruggar define "in your way"19:16
soulcake joined19:16
wereHamster xiong: I told you how to delete master. Y U no use that solution?19:16
wulffeld Hey, I've got a problem where git archive is crashing: https://gist.github.com/1574600 - is there a way I can test git-upload-archive on the remote?19:17
xiong wereHamster, Yes well, our messages are crossing, likely because we're both doing other things -- I'm studying up on what you're saying.19:18
tellone joined19:18
folsto left19:19
xiong shruggar, Ideally, I should see no branches at all except what my student has put there. Ideally, I should see what he sees, no more, no less. Except when I decide to change the rules and deliberately create a 'tutor' branch and do work for him. Usually, not. Let him work.19:19
jceb left19:19
cmn wulffeld: it's not crashing, it's giving you an error message19:19
o_ left19:20
wulffeld cmn: Okay, well, I'm none the wiser unfortunately. The ref is in the repos and I can push/pull fine.19:20
legnaleurc_ joined19:21
cmn what you're giving it is not a ref, it's a commit19:21
legnaleurc left19:21
flip_digits left19:21
cmn try with the branch name19:22
xiong Oh. Really! Well thank you wereHamster, the solution was much easier than I thought. I've been able to delete local 'master' without any fanfare.19:22
fl0w joined19:22
wulffeld cmn: I see. This is part of a deployment procedure that first does "git ls-remote triad:/scm/myrepos.git HEAD" that used to work fine. If I use master:site it's the same error msg.19:23
Octalot joined19:23
cmn it won't the the exact same one... does master exist?19:24
what does HEAD:site do?19:24
NiklasFiekas left19:24
legnaleurc joined19:24
dorkmafia joined19:25
codebeaker_ joined19:25
mxweas left19:25
legnaleurc_ left19:25
wulffeld cmn: http://pastebin.com/DCkbUcyL19:26
ensonic joined19:26
ChanServ set mode: +v19:26
cmn oh, bugger, turns out it's actually the syntax that's wrong19:27
SegFaultAX joined19:27
wulffeld cmn: Oh?19:27
cmn it might work locally, but upload-archive doesn't seems to take magic pathspecs19:27
eijk__ joined19:27
wulffeld cmn: Worked fine when I moved the repos to another server.19:28
linusoleander joined19:28
cmn also with remote archive?19:28
eijk_ left19:28
cmn the manpage says to give the ref as one arg and the path as a different one19:28
brainbox1100 joined19:28
wulffeld cmn: Yep. Like a charm.19:28
ensonic hi, where does git store the Follows/Precedes info for tags, I still have some tags in my converted repo where the tag follows itself19:29
cmn there is no such data stored19:29
not explicitly, anyway, you get it by examining the DAG and where tags point19:29
wulffeld cmn: Deprecated syntax maybe? The one that works is 1.7.2.5 - the one that barfs is 1.7.8.1 (or 2)19:29
Zyrkon left19:29
ensonic cmn, hmm, mybe a bug in gitk then ..19:30
nzee joined19:30
cmn wulffeld: shouldn't be, HEAD:site should be a valid way to get a treeish19:31
might be a regression19:31
ensonic: perhaps, but are you expecting? you're probably inspecting a commit, no?19:32
kermit left19:32
kermit joined19:32
wulffeld cmn: I'll fiddle around with an older version and see if that works. Thanks a bunch for your help!19:32
cmn I'd consider it correct if it said a commit follows a tag that points to it19:33
ensonic cmn, I have a couple of tags, REL_0_1, REL_0_2, ... gitk shows them as hyperlinks and for most tags 0_2 follows 0_1 and preceeds 0_3, but for a few 0_X follows 0_X19:34
cmn, this is when clicking on the commit where the tag points to19:35
fl0w left19:36
cmn here clicking on a tagged commit shows a follows of the one before, so apparently you're expecting the right behaviour19:37
VladGh left19:37
dorkmafia left19:37
cmn it seems to behave a bit erratically19:38
so yeah, it looks like a gitk bug19:39
cesc left19:40
wulffeld cmn: Yup, 1.7.6.5 works for me so something changed.19:41
schnatta joined19:42
ensonic cmn, you see the wrong beaviour sometimes too?19:43
cmn the fields are missing in some cases19:43
or blank, rather, even though for later and earlier tags it's fine19:44
wulffeld: sounds like a regression19:44
ensonic cmn, I was just wondering about this, as I have converted the repo and I could still fix it as the repo is not yet shared, but if this is not explicitely stored in the repo, I can push the repo19:44
cmn that information can only be inferred, git doesn't know or care what follows what in the tags19:44
the only following git has is in the history19:44
ensonic great gitk does not support --version and neither shows it in the about box :/19:45
wulffeld cmn: I just got a mail from a guy who has the same problem. He was in here earlier and someone told him it was changed for security reasons: "git archive/fetch only supports fetching or archiving for commits referenced as tags or branches. And this all for security reasons.".19:46
SamB left19:47
cmn yes, but it's still referenced by a branch, if you say HEAD:site19:47
crp joined19:47
cmn it was probably hardened a bit so it takes a commit instead of a tree-ish19:47
SethRobertson 1.7.8.1 "git archive" mistakenly allowed remote clients to ask for commits19:48
that are not at the tip of any ref.19:48
mandric joined19:48
cmn but HEAD:site /is/ at the tip of a ref19:49
cbreak isn't that part of the spec?19:49
brian_g left19:49
SethRobertson I was just clarifying what I said earlier, not arguing against HEAD:site19:49
cmn ok19:50
SamB joined19:50
aspotashev left19:50
jast IIRC git archive has allowed downloading arbitrary trees if upload-archive was enabled at all19:50
brainbox1100 left19:51
dvide joined19:52
aspotashev joined19:52
thebignoise left19:52
cmn so the fix was probably to just take the whole arg and try to parse that as a ref19:53
soulcake left19:53
Destos left19:53
brainbox1100 joined19:54
DaveIngram joined19:54
nixmaniack joined19:55
Zyrkon joined19:56
lonewulftp left19:56
NiklasFiekas joined19:56
nixmaniack left19:56
nixmaniack joined19:58
mandric left19:59
dorkmafia joined19:59
churp joined19:59
fermianyon left20:01
crp_ joined20:01
xerora joined20:02
AmirBehzad left20:02
crp_ left20:03
SethRobertson I bet that is not true. That would have been written differently20:04
crp left20:05
ipalaus_ left20:05
mishok13 left20:05
NiklasFiekas left20:06
ipalaus_ joined20:13
tizzotizzo-afk20:14
lacrymol1gy joined20:16
lacrymology left20:17
codebeaker_ left20:17
eighty4 left20:17
dreiss left20:18
Octalot left20:18
Octalot joined20:19
codebeaker_ joined20:19
krz left20:21
Cromulent left20:22
snearch joined20:24
mjessome joined20:24
codebeaker_ left20:25
lacrymol1gy left20:26
SegFaultAX left20:27
bgerber left20:29
bgerber joined20:29
stratwine left20:29
Dynom left20:30
Dynom joined20:30
Dynom left20:30
faber left20:33
aspotashev left20:34
cmn well, from the message "HEAD:site" ref doesn't exist, that's what it points to20:36
matsebc left20:37
v0n left20:37
gavin_huang left20:37
yshh left20:37
yshh joined20:38
friskd joined20:38
friskd left20:39
kanru left20:39
kanru joined20:40
friskd joined20:42
kermit left20:42
yshh left20:42
kermit joined20:42
brian_g joined20:42
Leemp2 joined20:45
marthinal left20:45
NiklasFiekas joined20:46
Leemp2 left20:47
igotnolegs joined20:48
khmarbaise left20:49
BonQuisha left20:51
Cromulent joined20:54
LimeBlast left20:56
mjessome left20:56
prince_igor76 joined20:59
break57382 left21:00
snearch left21:02
umren left21:02
matsebc joined21:03
prince_igor76 left21:03
rgk joined21:04
metcalfc joined21:05
crisp joined21:05
rgk i'm trying to configure gitweb on a gentoo box and besides copying the folder instaweb creates in the webroot, can't get it to work, im using lighttpd21:06
rmillerx left21:08
rmillerx joined21:08
nowhere_man joined21:12
rphillips joined21:12
kephas left21:13
neurodrone left21:13
Xeross joined21:14
BonQuisha joined21:14
psoo joined21:14
ldlework joined21:14
frogonwheels left21:15
Dulak left21:16
Sir_Rai left21:16
codeshah joined21:18
Spockz left21:20
wilmoore left21:25
avandenhoven left21:26
brian_g left21:26
wilmoore joined21:26
siprbaum left21:28
siprbaum joined21:28
Cromulent left21:30
delight joined21:30
rhl left21:31
tizzo-afktizzo21:32
TomyLobo left21:33
TomyLobo2 joined21:33
TomyLobo2TomyLobo21:33
ManDay left21:36
valtih left21:36
tizzotizzo-afk21:38
bremner rgk: I run several gitweb installs on lighttpd21:39
rgk: iirc, there are even howto-s21:40
rgk: did you enable CGI?21:40
rgk bremner: thats what im looking for21:40
yeah21:40
it works when i copy the instaweb install21:40
but all the guides tell me to link to the /usr/share/gitweb21:41
so it stays updated21:41
fir31ight left21:42
tomislater joined21:42
bremner I don't know what that is. It surely must depend on the OS/distro21:42
here is /etc/lighttpd/conf-available/20-gitweb http://paste.debian.net/151348/21:42
Spockz joined21:43
bremner that is on debian.21:43
rgk yea that looks different then what i was doing21:43
thanks ill try it21:43
bremner: why the $ at the end of the $HTTP["host"] value21:45
whitman left21:46
phaedrix left21:46
bremner it's a regular expression21:47
that marks the end of the string21:47
nicoulaj joined21:48
iocor left21:50
nicoulaj left21:51
dv310p3r joined21:53
psoo left21:53
iheffner cmn: unless you are trying to git-archive from a repository that has a HEAD (under refs/heads/ or as a file named "HEAD" at the root of the repository), "HEAD" is meaningless to git-archive.21:53
sorry; not cmn.... wulffeld ^^21:54
brian_g joined21:54
fir31ight joined21:55
cmn it does understand HEAD over file://21:58
just tried over ssh (gitolite) and git archive --remote=origin HEAD does work, w/o any HEAD under refs/heads22:00
rgk bremner: thanks forgot about that, this is what im stuck with right now which is more then i can say from before http://git.madgizmo.org/22:01
it won't pickup the /etc/conf.d/gitweb.conf though22:01
sebrock left22:01
iheffner SethRobertson: looking at git commit ee27ca4a7818, it's not about being at the tip; it's about being *reachable*22:02
caseymcg joined22:03
naee left22:04
linusoleander left22:04
iheffner wulffeld: that commit also states "This also restricts some legitimate requests, too: ... 2. Sub-trees of reachable commits, like: git archive --remote=$url v1.7.7:Documentation22:05
riyonuk joined22:06
iheffner and cmn, "Local requests continue to use get_sha1, and are not restricted at all."22:06
cbreak alternative --remote=$url v1.7.7 -- Documentation22:06
cmn yes, I know local requests work22:06
but that's not at all what we were talking about22:06
bindaasomatic left22:06
iheffner cmn: no, I know. This just explains *why* local requests still work.22:07
cmn right, but archive --remote and a local archive execute two different pieces of code22:08
the remote part is handled by upload-archive22:09
matsebc left22:09
matsebc joined22:11
baccenfutter left22:11
iocor joined22:12
lonewulf` left22:12
LongBeach left22:13
ipalaus__ joined22:15
ipalaus_ left22:15
lonewulf` joined22:15
pantsman joined22:15
pantsman left22:15
pantsman joined22:15
eletuchy joined22:17
canton7 joined22:18
ThomasLocke left22:18
arvind_khadri left22:20
Cromulent joined22:23
ensonic left22:23
avandenhoven joined22:25
xsaidx joined22:25
xsaidx left22:26
kosaidpo joined22:26
kosaidpo left22:27
macRover joined22:29
neurodrone joined22:29
wulffeld left22:29
avandenhoven left22:29
xerora left22:30
avandenhoven joined22:32
xerora joined22:32
mjessome joined22:32
arvind_khadri joined22:33
btanaka joined22:34
fisted joined22:35
EricInBNE joined22:35
avandenhoven left22:36
steffo joined22:36
Jackneill left22:37
rendar left22:39
caseymcg left22:41
diegoviola left22:42
DarkAR joined22:43
Spockz left22:43
mjessome left22:44
frogonwheels joined22:45
eletuchy_ joined22:46
Araxia_ joined22:47
tgunr I accidently checking a huge binary into my repo a few commits back as I just discovered (490MB). How can I prune it completely out of the repo? I don't want a clone to have to deal with this huge file.22:47
FauxFaux tgunr: man git filter-branch22:47
gitinfo tgunr: the git-filter-branch manpage is available at http://jk.gs/git-filter-branch.html22:47
tgunr thanks, i couldn't recall which tool to use.22:48
Mikachu http://help.github.com/removing-sensitive-data/22:49
might be helpful too, huge or sensitive should be same deal :)22:49
tomislater left22:49
eletuchy left22:50
Araxia left22:50
Araxia_Araxia22:50
Goplat` joined22:52
Goplat left22:52
sitaram left22:54
tgunr cc22:54
Sigma left22:54
sitaram joined22:56
sitaram left22:56
sitaram joined22:56
macRover left22:58
aspiers joined23:03
txomon|home left23:05
aspiers hi all, is there a single git CLI command to get a directory listing similar to what is displayed here: https://github.com/git/git - in other words, filename, age, and commit message?23:05
(and possibly the abbreviated commit SHA1 too)23:06
cmn no23:06
aspiers I can do it with a combination of git ls-tree and git log -123:06
but that's ugly, and doesn't scale to large directories23:06
Mikachu git instaweb ;)23:07
aspiers Mikachu: yeah, I want it on STDOUT though :)23:07
wow, that's pretty surprising if it doesn't exist23:07
brian_g left23:07
cmn git instaweb & curl localhost:8080/whatever23:07
it's not surprising at all23:08
that information isn't stored in git23:08
you need to infer it, and it's an expensive operation23:08
aspiers git log -1 is expensive?23:08
Mikachu for each file, you need to find the last file where it was changed23:08
cmn no, running log for each path is expensive23:08
kermit left23:08
Mikachu last commit, rather23:09
cmn for each path you need to run git log --filter-diff=M and grab the first commit it shows23:09
Mikachu well, you don't strictly need to, but it's the most straightforward way23:09
cmn sure, you can cache23:09
aspiers I've heard this kind of argument before, from the author of git-annex23:09
Mikachu it's not an argument, it's a fact23:09
aspiers Mikachu: you misunderstand me23:10
cmn argument?23:10
aspiers let me finish23:10
cmn it's the way the git data is modeled23:10
Mikachu you're the one who stopped23:10
:)23:10
aspiers I'm not talking about that23:10
I'm composing the next sentence :)23:10
Mikachu nobody who wanted it wanted enough to write it, obviously23:11
cbreak most people on IRC can type really fast23:11
aspiers the argument is: "this is a polynomial-time problem, so in the worst cases, it can be extremely expensive and end up hogging CPU and/or RAM, therefore we shouldn't implement it at all"23:11
cbreak we're impatient23:11
aspiers which I strongly disagree with, because in many cases, it is very useful functionality which a modern system is *easily* capable of handling23:12
cmn it's implemented in several places, just not in git-core23:12
aspiers and if it starts grabbing CPU/RAM, then you just kill it, or set limits.conf23:12
cmn caring about indivial files isnt' very gittish23:12
aspiers the majority of repos are nowhere near big enough for it to be an issue23:12
Mikachu git ls-files | while read file; do git log -n 1 --pretty="Filename: $file, commit: %h, date: %ad" -- $file; done | cat23:13
that's how slow the naive way is (stole it from stackoverflow)23:13
dirkle left23:13
cbreak what does he want?23:14
zxiest left23:14
cmn why is there a pipe to cat at the end?23:14
Mikachu cmn: to not open less 132 times23:14
aspiers Mikachu: I assume you mean http://stackoverflow.com/questions/223678/git-which-commit-has-this-blob which I had already read23:14
Mikachu that is incorrect23:14
cmn oh, right, because git would try to open the pager23:15
Mikachu http://stackoverflow.com/questions/5183199/how-print-last-commit-info-for-every-file-in-a-git-repository23:15
well, it's correct that you assumed it, but it's not what i meant23:15
aspiers haha :)23:15
kermit joined23:15
Mikachu fwiw, that command has been running for 2 minutes on git.git now23:15
aspiers ahah, I couldn't find that SO question23:15
but my quick hack was almost identical to that23:16
ah, no23:16
that's not what I asked for23:17
I only want the info for a single directory23:17
Mikachu that's conceptually the same thing23:17
cmn either ls-files has flags to do that or use ls-tree | cut23:17
aspiers it does not have the same algorithmic complexity, except in the worst case where your repo only has one directory23:17
cmn it has the same complexity, it might not have the same n23:18
aspiers if you restart your git.git run on a single directory and time it, I think you will prove my point :)23:18
Mikachu git ls-tree HEAD --name-only instead of ls-files23:18
aspiers cmn: complexity depends entirely on your definition of n23:18
dfr|mac joined23:18
canton7 left23:18
Mikachu it's obviously the same complexity23:18
that's like saying truncating filenames before the letter f is a lower complexity, / isn't special in git ;)23:19
cmn n is the amount of files you want to look the info for23:19
aspiers no, n could be the number of files in the repo23:19
cmn and it runs faster because it has less work to do23:19
how would that definition of n make sense?23:19
Mikachu i'm not going to argue about it23:19
cbreak Mikachu: there are much more efficient ways to implement that23:19
Mikachu there are a bunch of files in t from 2006, those are really slow to list23:20
aspiers n could also be the number of commits in the repo23:20
my point is that a single-dimensional complexity analysis is not very helpful here23:20
cbreak algorithm O(n) in number of commits and O(n) in number of files23:21
aspiers because the performance is critically dependent on *multiple* characteristics of the repo and the directory in question23:21
no one metric can yield a valuable predictor of run-time23:21
cbreak: that's O(m.n) :-)23:22
Mikachu well, for 2147 files and 25318 commits, it is Pretty Slow23:22
cbreak Mikachu: because your algorithm is O(numcommits*numfiles)23:23
aspiers right, but for a very new directory containing 10 files, in a repo with 9629483619 commits, it might be pretty fast23:23
delight left23:23
cmn or very slow23:23
aspiers cmn: how so?23:24
Mikachu sure, but that has nothing to do with algorithmic complexity23:24
cmn if one file was only ever touched in the first commit23:24
Mikachu just some of the numbers in your algorithm end up smaller if you pick only newer files23:24
but it's always the same algorithm23:24
aspiers Mikachu: yeah, I'm trying to encourage this discussion back to the real world ;-)23:24
Mikachu ( git ls-files | while read file; do; git log -n 1 -- $file; done; ) 612.71s user 28.95s system 98% cpu 10:52.65 total23:25
aspiers in which this functionality would be useful in a large number of the git repos out there in the world23:25
ipalaus__ left23:25
j416 git ls-files | while read file; do git log -n 1 --date=iso --format="%Cblue%h%Creset %C(yellow)%an%Creset %Cgreen%ad%Creset $file %C(cyan)[%s]%Creset" -- $file; done23:25
Mikachu i don't think the colors make it faster23:25
j416 it's hard to get good alignment :)23:25
aspiers lol23:25
j416 lol23:25
nzee left23:25
j416 speed isn't an issue here23:25
cmn not even the "go faster stripes"?23:25
aspiers %Cred would definitely make it faster23:25
j416 small repo23:25
haha23:25
aspiers j416: that's my point exactly23:26
j416 just thought I'd share it.23:26
cbreak Mikachu: your algorithm is worst case numberOfCommits*numberOfFiles, which is very slow. But you can make an algorithm that is in that case just numberOfCommits23:26
aspiers I have < 5000 files23:26
Mikachu yeah23:26
aspiers and 426 commits23:26
cbreak it's still slow23:26
Mikachu the worst case is presumably numberOfCommitsToOldestFileInSet or so :)23:26
ie, for the best algorithm23:26
aspiers and the directory in question only has 23 files23:26
cbreak about as slow as running git log23:26
Mikachu but that might use a _lot_ of memory23:26
cbreak all through the end23:26
Mikachu: na23:27
you just have to remember the commit each file is changed in23:27
so a list as long as the number of files in the newest commit is enough23:27
DaveIngram left23:27
cbreak (since you want to find out when those files are modified last)23:27
Mikachu okay, yeah, only a couple of megabytes for linux.git probably23:28
j416 that looks better aligned: git ls-files | while read file; do git log -n 1 --date=iso --format="%Cblue%h%Creset %Cgreen%ad%Creset %C(yellow)%an%Creset $file %C(cyan)[%s]%Creset" -- $file; done23:28
Mikachu you probably want git --no-pager log23:28
Destos joined23:28
j416 (me?)23:30
sp3ctr left23:30
wilmoore left23:30
Mikachu yeah23:30
j416 why?23:30
Mikachu it might open the pager for each file otherwise23:30
j416 seems not23:30
I set GIT_PAGER=less first, no difference23:30
hm23:30
Mikachu your less probably has the --exit-if-one-screen option set23:30
git has some options hardcoded if LESS_OPTIONS is not set, iirc23:31
j416 does it not work for you?23:31
aspiers j416: pager issues for me here23:31
j416 hm ok23:31
well I was using the same thing, only colours added, as was suggested on some link above23:32
j416 shrugs23:32
aspiers fixed by --no-pager23:32
j416 ok :)23:32
on which git?23:32
git --no-pager log?23:32
Mikachu yes23:32
aspiers yup. 1.7.8.206.g7140623:32
j416 k23:32
mloskot_dogwalk joined23:32
j416 now to figure out what to name the alias for this23:33
cmn git pretend-im-svn23:33
mloskot left23:34
j416 haha23:35
Mikachu git pis23:35
aspiers j416: looks pretty nice but I prefer --date=relative with it coming after the other fields23:35
j416 whatever you like :)23:35
aspiers actually I just changed my mind again23:35
baburdick left23:36
aspiers --date=relative is better for web pages which can actually do proper alignment and have more than 80 columns :)23:36
jab416171|Cloud joined23:36
aspiers --date=iso is sortable too23:36
j416 "git log --stat" on git.git is significantly faster than that thing, maybe it would be easy to parse that for files against git ls-files23:36
I wonder how nicely one could do it in sh23:36
baburdick joined23:36
aspiers j416: that's a good idea23:37
Mikachu https://git.wiki.kernel.org/articles/e/x/a/ExampleScripts_6d49.html23:37
ran in 3.4 seconds for the whole git repo :)23:38
aspiers was that already there?23:38
Mikachu yes23:38
j416 Mikachu: heh, yeah, that's the thought23:38
cool :)23:38
drev1 joined23:39
j416 whoa fast23:39
< 2 s here23:39
brian_g joined23:39
j416 formatting isn't very nice, though23:39
Mikachu yeah, could use some options23:40
Cromulent left23:40
j416 but, I don't have much need for something like this anyway, so I won't waste my time doing it. :)23:41
Mikachu incidentally in git.git it seems to take exactly the same time without the -r both in / and in some subdirs23:41
cbreak if you want to write it efficiently23:42
you should analyze the output of git log --name-only23:42
j416 Mikachu: I'd assume it's git log that takes time to run, not git ls-tree23:42
Mikachu j416: yeah, but the theory was that it would be faster if it didn't need to traverse the full history23:43
j416 mhm23:43
ok23:43
cbreak something like git log --name-only | (remember the last sha, and fill a map data structure with path->hash associations, without overwriting)23:44
mloskot__ joined23:44
storrgie joined23:44
cbreak if you want you can prepopulate the map and only fill the paths that exist in the newest commit23:44
and abort when all are filled23:44
Mikachu cbreak: that's what the script does23:44
cbreak you sure? It looks like noise to me.23:45
Goplat` left23:45
Chib joined23:45
the_cybersphinx joined23:46
Mikachu it seems to not be perfect, some files get printed with -1 for me23:46
oh well23:46
aspiers haha, it uses 'break' instead of 'last'23:48
Bareword "break" not allowed while "strict subs" in use23:48
mloskot_dogwalk left23:48
aspiers perfect example of why 'use strict' should *never* *ever* be omitted23:48
unmanbearpig left23:48
Mikachu i have no idea what you just said23:48
cybersphinx left23:48
Mikachu break doesn't break loops in perl?23:49
aspiers nope23:49
Mikachu ah23:49
that would be too easy?23:49
aspiers last23:49
Mikachu so break is just a noop?23:49
aspiers and next, not continue23:49
no, break is a compile error23:49
fermianyon joined23:49
aspiers unless you break the golden rule23:49
Mikachu but the default mode in perl is to ignore compile errors?23:49
aspiers yes23:49
and I'm not going to defend that23:49
Mikachu okay23:50
i'm just asking as a perl noob23:50
incidentally, vim syntax hilights break;23:50
aspiers like a keyword?23:50
Mikachu yeah, now it's faster in a subdir23:50
yes23:50
exactly the same color as last;23:50
aspiers oh dear23:51
Morphous_ left23:51
Mikachu it's probably not a perfect script23:51
given what you said, and it not finding commits for all files23:51
j416 cool23:51
aspiers it's working for me23:51
Mikachu well, near the top of git.git, it has a bunch of -123:52
aspiers oh23:52
Mikachu which is what it inits the attribution to23:52
aspiers it mixes numeric with string23:52
doh23:52
should init to "" not -123:52
Mikachu doesn't really matter, it didn't find the commit23:52
it should find commits for every file, or the file wouldn't be there :)23:52
aspiers in fact why does it even init?23:52
oh I see23:53
mloskot__ left23:53
mloskot joined23:53
mloskot left23:53
mloskot joined23:53
hwit left23:53
DarkAR left23:53
aspiers why is it not finding commits for you?23:54
Mikachu how would i know? :)23:54
legnaleurc left23:54
aspiers maybe a parsing bug?23:54
or you think that git log isn't finding them?23:54
Mikachu when i just run git log, it seems to find them23:54
dreiss joined23:54
cbreak maybe there are files that are never changed.23:55
does adding count as change?23:55
aspiers cbreak: they would still be in the root commit23:55
cbreak probably the case.23:55
Mikachu they're probably not in the root commit23:56
it's the release notes :)23:56
aspiers hehe23:56
which file exactly?23:56
cbreak maybe no one wrote them.23:56
aspiers I could try on my git.git repo23:56
cbreak or they got in via an evil merge23:56
evil merges are ... not usually diffed23:56
(just like normal merges)23:56
Mikachu almost all files in Documentation/RelNotes/23:57
legnaleurc joined23:57
Mikachu understandably a bunch of stuff in git-gui/23:57
aspiers ok23:57
ipalaus_ joined23:57
jdav` joined23:58
d0k left23:59

Logs Search ←Prev date Next date→ Channels Documentation