--- Log opened Fri Sep 24 00:00:43 2021 |
00:35 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Connection closed] |
00:35 | | VirusJTG [VirusJTG@Nightstar-b00.oti.104.208.IP] has joined #code |
00:35 | | mode/#code [+ao VirusJTG VirusJTG] by ChanServ |
03:51 | < Alek> | I, too, have encountered losing older snapshots after an OS upgrade. |
03:51 | < Alek> | Windows, but still. |
04:28 | | Degi [Degi@Nightstar-n87t8b.dyn.telefonica.de] has quit [Operation timed out] |
04:29 | | Degi [Degi@Nightstar-qs2gt6.pool.telefonica.de] has joined #code |
05:25 | | Vorntastic [uid293981@Nightstar-phvupn.irccloud.com] has joined #code |
05:25 | | mode/#code [+qo Vorntastic Vorntastic] by ChanServ |
05:38 | | VirusJTG [VirusJTG@Nightstar-b00.oti.104.208.IP] has quit [Connection closed] |
05:39 | | VirusJTG [VirusJTG@Nightstar-b00.oti.104.208.IP] has joined #code |
05:39 | | mode/#code [+ao VirusJTG VirusJTG] by ChanServ |
05:48 | | Kindamoody[zZz] [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Connection reset by peer] |
05:48 | | Kindamoody[zZz] [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
05:48 | | mode/#code [+o Kindamoody[zZz]] by ChanServ |
05:48 | | macdjord|slep [macdjord@Nightstar-re5.7if.45.45.IP] has joined #code |
05:48 | | mode/#code [+o macdjord|slep] by ChanServ |
05:48 | | JustLurk [justbob@ServerAdministrator.Nightstar.Net] has joined #code |
05:48 | | JustBob [justbob@Nightstar.Customer.Dissatisfaction.Administrator] has quit [NickServ (RECOVER command used by JustLurk)] |
05:48 | | JustLurk is now known as JustBob |
05:48 | | mode/#code [+o JustBob] by ChanServ |
05:49 | | celticminstrel [celticminst@Nightstar-kqocer.dsl.bell.ca] has quit [Connection reset by peer] |
05:49 | | KiMo|autorejoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
05:49 | | ErikMesoy1 [Bruker@Nightstar-t4q.qfg.9.46.IP] has joined #code |
05:49 | | celticminstrel [celticminst@Nightstar-kqocer.dsl.bell.ca] has joined #code |
05:49 | | mode/#code [+o celticminstrel] by ChanServ |
05:49 | | ErikMesoy [Bruker@Nightstar-9hbv99.bb.online.no] has quit [Ping timeout: 121 seconds] |
05:50 | | Kindamoody[zZz] [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Operation timed out] |
05:50 | | mac [macdjord@Nightstar-re5.7if.45.45.IP] has quit [Ping timeout: 121 seconds] |
06:38 | | ErikMesoy1 is now known as ErikMesoy |
06:38 | | mode/#code [+o ErikMesoy] by ChanServ |
12:21 | | Emmy [Emmy@Nightstar-l49opt.fixed.kpn.net] has joined #code |
12:56 | | catalyst_ [catalyst@Nightstar-u5d9he.dab.02.net] has joined #code |
12:59 | | catalyst [catalyst@Nightstar-ejd4sd.cable.virginm.net] has quit [Ping timeout: 121 seconds] |
13:43 | | catalyst [catalyst@Nightstar-rk53c2.dab.02.net] has joined #code |
13:46 | | catalyst_ [catalyst@Nightstar-u5d9he.dab.02.net] has quit [Connection closed] |
13:47 | | catalys23 [catalyst@Nightstar-ejd4sd.cable.virginm.net] has joined #code |
13:50 | | catalyst [catalyst@Nightstar-rk53c2.dab.02.net] has quit [Connection reset by peer] |
14:57 | | catalys23 [catalyst@Nightstar-ejd4sd.cable.virginm.net] has quit [[NS] Quit: -a- Connection Timed Out] |
14:58 | | catalyst [catalyst@Nightstar-ejd4sd.cable.virginm.net] has joined #code |
15:05 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
15:05 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
15:30 | | macdjord|slep is now known as macdjord |
15:41 | | mac [macdjord@Nightstar-re5.7if.45.45.IP] has joined #code |
15:41 | | mode/#code [+o mac] by ChanServ |
15:42 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
15:43 | | macdjord [macdjord@Nightstar-re5.7if.45.45.IP] has quit [Ping timeout: 121 seconds] |
15:44 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
15:44 | | mode/#code [+ao ToxicFrog ToxicFrog] by ChanServ |
16:58 | | catalyst [catalyst@Nightstar-ejd4sd.cable.virginm.net] has quit [Connection closed] |
16:58 | | catalyst [catalyst@Nightstar-ejd4sd.cable.virginm.net] has joined #code |
17:10 | | macdjord|slep [macdjord@Nightstar-re5.7if.45.45.IP] has joined #code |
17:10 | | mode/#code [+o macdjord|slep] by ChanServ |
17:13 | | mac [macdjord@Nightstar-re5.7if.45.45.IP] has quit [Ping timeout: 121 seconds] |
17:23 | | macdjord|slep is now known as macdjord |
17:37 | | Vorntastic [uid293981@Nightstar-phvupn.irccloud.com] has quit [[NS] Quit: Connection closed for inactivity] |
17:50 | | KiMo|autorejoin is now known as Kindamoody |
17:50 | | mode/#code [+o Kindamoody] by ChanServ |
18:21 | | catalyst_ [catalyst@Nightstar-rk53c2.dab.02.net] has joined #code |
18:23 | | catalyst [catalyst@Nightstar-ejd4sd.cable.virginm.net] has quit [Ping timeout: 121 seconds] |
18:39 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
18:40 | | catalys3 [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
18:42 | | catalyst_ [catalyst@Nightstar-rk53c2.dab.02.net] has quit [Connection reset by peer] |
18:43 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
18:55 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
18:57 | | catalys3 [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
19:28 | | catalyst_ [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:29 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
19:30 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:31 | | catalyst_ [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Connection reset by peer] |
19:32 | | catalyst_ [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:32 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Connection closed] |
19:34 | | catalyst_ [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Connection reset by peer] |
19:34 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:34 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Connection reset by peer] |
19:35 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
19:35 | | mode/#code [+o Kindamoody] by ChanServ |
19:36 | | catalyst_ [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:38 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
19:43 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:44 | | catalys25 [catalyst@Nightstar-rk53c2.dab.02.net] has joined #code |
19:46 | | catalyst_ [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
19:47 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
19:48 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:48 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Connection closed] |
19:48 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:49 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Connection reset by peer] |
19:50 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
19:51 | | catalys25 [catalyst@Nightstar-rk53c2.dab.02.net] has quit [Ping timeout: 121 seconds] |
20:24 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
20:25 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
20:25 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [[NS] Quit: Rebooting this stupid laptop!] |
20:54 | | Kimo|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
20:55 | | mode/#code [+o Kimo|autojoin] by ChanServ |
20:55 | | Kimo|autojoin is now known as Kindamoody |
20:59 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
21:51 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
22:08 | | catalyst_ [catalyst@Nightstar-f3j.rlh.148.95.IP] has joined #code |
22:11 | | catalyst [catalyst@Nightstar-f3j.rlh.148.95.IP] has quit [Ping timeout: 121 seconds] |
22:41 | <&McMartin> | tee hee |
22:41 | <&McMartin> | "If you just push, pull and make basic commits, [Git is] a reasonably simple, fool proof system. |
22:41 | <&McMartin> | If you start creating branch systems or try to mash your commits to make your 27 incremental commits into a single beautiful one, you rapidly begin shooting yourself in the foot in a way that quickly requires An Expert to fix. |
22:41 | <&McMartin> | Git is a tool to punish people who think they are smart." |
22:48 | <@Tamber> | oof, yeah. |
22:49 | <@Tamber> | Though, that said, ime: Oh my god, if you're working with multiple people on a project, please don't work directly on master unless you're incredibly careful, because it'll make a mess. |
22:49 | <@Tamber> | (spoiler: you won't quite be careful enough. It will make a mess.) |
22:50 | <@Tamber> | (This brought to you by a friend learning git by jumping straight in on a large codebase, and working on master, then getting frustrated over "why am I getting commits with 0 files changed?!" and stuff like that.) |
22:54 | <@Tamber> | (Warc would like to add: "Wings of wax" to that.) |
23:07 | <&McMartin> | If you have multiple people working on the same branch, git will start improvising a branch system for you, so that gets you into Sad Times, albeit often not the kind that require experts to unfuck |
23:07 | <&McMartin> | If you can get An Expert to set up branch automation, say, by way of Your Friends At Gitlab, then you get the best of both worlds |
23:07 | <@Tamber> | Yeah, it was just messy, not a disaster. |
23:08 | <&McMartin> | Which is to say a marginal improvement over Subversion, which Git fans get very mad when you point out because they hate Subversion with a passion for not being as bad as they tell themselves it was |
23:08 | <&McMartin> | (CVS, however, was actually even worse than people tell themselves it was~0 |
23:09 | <&McMartin> | I've seen exactly one major project that was able to use CVS acceptably, and the way they did it was essentially by semi-manually defining a tag for each logical changeset. |
23:09 | <&McMartin> | Because CVS, as it happens, has no notion of "a changeset"; each file is versioned individually, and the version numbers are the number of times THAT FILE had been changed. |
23:09 | <@Tamber> | oh, lovely |
23:10 | <&McMartin> | The ancestral line of revision control systems, from RCS/SCCS through CVS through SVN through the distributed systems like Git and Mercurial -- is really interesting because there are these sharp generational splits as new and genuinely fundamental concepts are introduced |
23:11 | <&McMartin> | CVS's new fundamental concept was "it's not necessary to lock *every file in the entire repo* while a person is *making edits*; we only have to lock at the points where patches are applied, and if they don't conflict then that's even less constraint needed" |
23:11 | <&McMartin> | The C in "CVS" is for "concurrent" and it means it |
23:11 | <@Tamber> | *nods* |
23:12 | <&McMartin> | You can -- and in many contexts I would -- claim that CVS was a step backwards for many teams from the hard-locking systems of its previous generation |
23:12 | <&McMartin> | But you don't get to something like SVN or Perforce without something like CVS as a waypoint. |
23:13 | <@Tamber> | can't have the journey, without all the steps along the way, or something like that. |
23:13 | <@Tamber> | Even if some of the steps were into muddy puddles. |
23:13 | <&McMartin> | It served me well enough; it hurt me on multiple occasions; I will never use it again by choice; but I respect it for what it did and what it was. |
23:15 | <@Tamber> | git was the first vcs I ever actually used, tbh, so I don't really have any other point of reference. I think I did occasionally grab some code via svn checkout, but it was "copy the magic incantation, do that" |
23:15 | <&McMartin> | (I used CVS from about 1997 through about 2004) |
23:16 | <&McMartin> | svn is a case of many incremental improvements that don't amount to a generational shift |
23:18 | <&ToxicFrog> | I know my dad used RCS and CVS; my first version control system was p4, followed by svn, but the first one I actually used willingly was git |
23:19 | <&ToxicFrog> | Largely because it was way easier to set up (no separate server install needed) and, unlike svn and p4, was not constantly teetering on the brink of obliterating all of your changes every time you needed to do merge resolution |
23:21 | <&McMartin> | I get the impression that p4 basically pioneered branching and svn spent a long time trying to catch up |
23:21 | <&McMartin> | And this was still very fraught in svn up through at least 2010, though this is also a place where it has consistently gotten better while people weren't looking at it. |
23:22 | <&ToxicFrog> | My first p4 experience was at a company where branches were used for something, but not something relevant to what my team was working on, and I never really understood how they worked there |
23:23 | <&ToxicFrog> | Honestly I don't think I ever got a decent handle on how they work in SVN either |
23:23 | <&McMartin> | Yeah, the part that I think gets ignored/swept aside in discussions is that in the early aughts branching and merging wasn't really a solved problem |
23:24 | <&McMartin> | *somthing* about the way DVCSes represent branches seems to make branch merge conflicts much rarer but I have never quite sorted out why that is, much less determinde some minimal example for showing off such a fix |
23:25 | <&ToxicFrog> | (IIRC I started using git sometime around 2007-2008) |
23:27 | <&ToxicFrog> | For me the win was not so much "merge conflicts are rarer" as "if conflict resolution goes badly you can easily roll back to a known good state and try again from the top", whereas in both svn and p4, at least at that time, if the merge conflict goes badly and you haven't independently backed up your working copy you are fucked |
23:28 | <&McMartin> | Now, when you say "merge conflict" do you mean "actually merging two actually branches", or do you mean "pulling from the server with uncommitted changes in your working copy"? |
23:28 | <&ToxicFrog> | The latter |
23:28 | <&ToxicFrog> | Which is a really common operation, because it won't let you commit until you do that |
23:29 | <&McMartin> | OK. For clarity, my discussion above is talking about the former; it's not a *fundamental* shift, but one of Git's incremental benefits is essentially "you get the ability to locally cache changes for free" |
23:29 | <&McMartin> | With SVN you need to manually svn diff > ohshit.diff before attempting a resolution. |
23:30 | <&McMartin> | With git this is unnecessary because a local commit *is such an ohshit.diff intrinsically* |
23:30 | <&McMartin> | But "local commit" is the generation shift. So all DVCSes will have this for free, and centralized VCSes would need to automate a similar process for safety |
23:30 | <&McMartin> | And those that did, did so very late in the game. |
23:31 | <&ToxicFrog> | I assumed that centralized VCSes would have adopted that feature at some point, yeah, if for no other reason than that once someone else has the idea the benefits are obvious even for centralized use |
23:31 | <&McMartin> | Unless I'm misreading you, a full backup of your checkout directory in SVN would not be required for safety, because reconstructing your base revision and reapplying the diff will do the trick. |
23:31 | <&ToxicFrog> | I spoke imprecisely; that would indeed be sufficient |
23:32 | <&McMartin> | OK |
23:32 | <&ToxicFrog> | Perhaps "backing up your changes" would be more appropriate |
23:32 | <&McMartin> | (Subversion has a longstanding problem where people found nevermind-I-fixed-it terrible solutions and then concluded that this was both the intended behavior and the best workflow you could possibly achieve with it) |
23:33 | <&McMartin> | (This also happens regularly with git, but it doesn't seem to define the experience of talking about it as much) |
23:33 | <&McMartin> | (In other news, git restore actually exists now and resolves a pain point I had for years early on) |
23:34 | <&ToxicFrog> | Oh hey, it's one of the like six different things `git checkout` does but given its own command and less bad UX |
23:34 | <&ToxicFrog> | neat |
23:34 | <&McMartin> | Yeah, that~ |
23:35 | <&McMartin> | It actually recursively processes directories by default, even! |
23:36 | <&McMartin> | After years of saying git checkout is the equivalent of svn revert (not to be confused with svn checkout, which is git clone), and that this was proof that subversion was bad |
23:36 | <&McMartin> | git restore is actually at par with svn revert, because `git checkout -- pathname` was *vastly inferior* to svn revert |
23:38 | <&ToxicFrog> | Oh? |
23:39 | <&ToxicFrog> | > and that this was proof that subversion was bad |
23:39 | <&ToxicFrog> | I mean, I have always taken it as proof that git, as much as I like it, has a UI designed by horrible gremlins |
23:39 | <&McMartin> | So, the polite version here is "Stockholm Syndrome" with a side of "anything that isn't like whatever I learned first is automatically bad, and is good to the degree that it behaves like whatever I learned first" |
23:40 | <&McMartin> | But the Git designers also early on explicitly stated that the only things to learn from SVN and CVS were that their existence had no value but as a terrible warning to others. |
23:41 | <&McMartin> | I have always suspected that the destructive terminology conflict between svn and git commands was intentional as a way of lashing out at SVN |
23:42 | <&McMartin> | But more seriously, I feel like they missed some important bits of the protocol when ignoring their predecessors |
23:42 | <&McMartin> | Like svn revert accepting directories with an "are you sure" option to recurse |
23:48 | <&McMartin> | I think the Git Expert (tm) opinion before was "you don't need svn revert because git reset --hard HEAD does what you want" |
23:48 | <&McMartin> | Except that's only true if you're at repo root |
23:56 | <&ToxicFrog> | Right, but I mean, what's the key difference between 'git checkout -- some/dir' and 'svn revert some/dir' here |
23:56 | <&McMartin> | My distinct recollection is that for some time the first there was a no-op. |
23:56 | <&McMartin> | "That's not a path git tracks" |
23:56 | <&McMartin> | Because git only knows about files and directories are simply implied by files |
--- Log closed Sat Sep 25 00:00:44 2021 |