When did Git become terrible? Let's track down the specific commit...
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
This is because Git is broken useless garbage. Apparently broken useless garbage designed by people who put a lot of faith in their HDs.
Or people who know that source control isn't backup software?
-
@boomzilla said in When did Git become terrible? Let's track down the specific commit...:
Or people who know that source control isn't backup software?
So your employer gives you a back-up tool that:
- Is separate from your source control system
- Is real-time, so your code is backed-up and up-to-date at the exact instant you close your laptop lid to bring your computer home at Friday 5:00 PM
- Doesn't make a mess of the network when you're in the process of building and hundreds of files are appearing/disappearing all at once? (This one disqualifies OneDrive, Box, and DropBox.)
I've never worked for an employer who provided that.
I mean, good for you if they do. But the fact that "Git is not backup software ROLL EYES GUYZ! ROLL THOSE EYES!" doesn't help me get my code onto a company server before I end up in a place where it could potentially get lost.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
@lb_ said in When did Git become terrible? Let's track down the specific commit...:
@asdf I'd argue that's an incorrect use of commits. I've done that myself and realized pretty quickly how useless the commits are. If I ever need to keep triggering a CI to see if I fixed the CI's issues, I'll git commit --amend and git push --force since it's my personal branch anyway.
But since with Git you need to actually push code to place it on the server (with its lack of server-side stashes and most companies not allowing server-side private branches), you do have unavoidable commits named stuff like "not finished yet, checkpoint commit".
This is because Git is broken useless garbage. Apparently broken useless garbage designed by people who put a lot of faith in their HDs.
I'd argue the problem with that scenario is this:
most companies not allowing server-side private branches
Which falls firmly into the "Not Git's fault" category. That's exactly what private branches are for...
-
@blakeyrat Your excuses for using git as a backup software are lame. You don't have access to any sort of network drive even? Yes, your reliance on any VCS as a backup system is retarded and you should feel bad about that.
-
@sloosecannon Maybe, but I've yet to work with a company that'll allow a branch without JIRA (or whatever) issue number in the name of it.
And since Git's competitors have server-side stashes, it also points to a weakness of Git compared to its competition. (One of many, many features Git doesn't have.)
-
@boomzilla said in When did Git become terrible? Let's track down the specific commit...:
Your excuses for using git as a backup software are lame.
Maybe, but they are true nevertheless.
And at least I bothered! I worked with a lot of people who were completely careless with the company's code, and walked around with un-secured stuff all the freakin' time.
@boomzilla said in When did Git become terrible? Let's track down the specific commit...:
You don't have access to any sort of network drive even?
In recent years, network drives provided by companies have been the "sync best effort whenever" type, not the "always online" type. That's fine for financial speadsheets, but it doesn't satisfy bulletpoint #2 in my above post.
How does your employer have it set up exactly? Always-online network drive? If so, how do you work from home when needed? Instead of telling me how wrong and stupid I am, tell me how it's supposed to be done.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
Maybe, but I've yet to work with a company that'll allow a branch without JIRA (or whatever) issue number in the name of it.
You work at shitty companies with overly restrictive rules.
-
@asdf said in When did Git become terrible? Let's track down the specific commit...:
You work at shitty companies with overly restrictive rules.
Ok AND YET this is a problem I have to solve and Git certainly does nothing to assist me.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
Ok AND YET this is a problem I have to solve and Git certainly does nothing to assist me.
With all due respect: It's not git's problem that your company doesn't allow a branch "blakeyrat/backup" to be created on the server. Git does assist you with this, because it makes creating branches an incredibly cheap operation.
-
@asdf said in When did Git become terrible? Let's track down the specific commit...:
With all due respect: It's not git's problem that your company doesn't allow a branch "blakeyrat/backup" to be created on the server.
But it is Git's fault that a feature that matches when I need almost exactly, the stash feature, doesn't store the stash online. Especially annoying because Git's competitor's do store the stash online. I'd ask what the hell they were thinking when they designed it, but... haha they didn't design shit.
-
@blakeyrat TFS was very complicated to back up last time I had a coworker trying to maintain it
-
@jbert said in When did Git become terrible? Let's track down the specific commit...:
@kt_ But is it better than kdiff3?
I use KDiff3 daily BTW, I actually though Visual Studio to use it instead of its native compare. You can't be cheaper than free.
-
@the_quiet_one said in When did Git become terrible? Let's track down the specific commit...:
CVS:
I remember how vast an improvement CVS was over RCS.
-
@greybeard said in When did Git become terrible? Let's track down the specific commit...:
I remember how vast an improvement CVS was over RCS.
RCS and SCCS really were the Wright Fliers of source control.
-
@dkf Yeah, these whippersnappers bellyaching about git. When I were a lad, I had to control source with RCS. Uphill, both ways.
I am eternally thankful I never had to use SCCS.
-
@asdf said in When did Git become terrible? Let's track down the specific commit...:
@lb_ While you're still fixing the issue, you might want to go back and forth between your different attempts, though, so it makes sense to make several commits that you'll later rewrite. And once you've created the code review, it only confuses the reviewers if you rewrite existing commits.
I only rewrite commits to fix the CI script, never to fix actual application code. My primary rule is that every commit must compile.
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
@lb_ said in When did Git become terrible? Let's track down the specific commit...:
@asdf I'd argue that's an incorrect use of commits. I've done that myself and realized pretty quickly how useless the commits are. If I ever need to keep triggering a CI to see if I fixed the CI's issues, I'll git commit --amend and git push --force since it's my personal branch anyway.
But since with Git you need to actually push code to place it on the server (with its lack of server-side stashes and most companies not allowing server-side private branches), you do have unavoidable commits named stuff like "not finished yet, checkpoint commit".
This is because Git is broken useless garbage. Apparently broken useless garbage designed by people who put a lot of faith in their HDs.
I agree, it would be cool to have server-side stashes, but temporary private branches work just as well when labeled properly.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
In recent years, network drives provided by companies have been the "sync best effort whenever" type, not the "always online" type. That's fine for financial speadsheets, but it doesn't satisfy bulletpoint #2 in my above post.
Neither does git. I'm sure you can see that, too.
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
How does your employer have it set up exactly? Always-online network drive? If so, how do you work from home when needed? Instead of telling me how wrong and stupid I am, tell me how it's supposed to be done.
I use our project's servers, personally. When I work from home, I'm logged into the VPN. I just use rsync to keep stuff like my source code backed up. The company also provides backup service / software.
It's amusing to me that you rant about software that deviates from using system features and then rant about inconveniences when you use the wrong tool for a job.
-
@boomzilla Wait, what exactly do you mean that source control isn't backup? Of course it is; that's literally pretty much all it is in fact. About 70% of what it is, at least; the rest is adjectives. The point of source control is to provide a versioned, integrated backup of your code.
-
@masonwheeler and in the case of Git, it really is a backup - every person that has the repo has a backup of the repo including its history at the same time.
-
@masonwheeler said in When did Git become terrible? Let's track down the specific commit...:
@boomzilla Wait, what exactly do you mean that source control isn't backup? Of course it is; that's literally pretty much all it is in fact. About 70% of what it is, at least; the rest is adjectives. The point of source control is to provide a versioned, integrated backup of your code.
Are you being deliberately obtuse?
-
@boomzilla No. That is literally the entire point of source control.
What do you think the point of source control is, then, if not to provide a versioned, integrated backup of your project?
-
@masonwheeler said in When did Git become terrible? Let's track down the specific commit...:
What do you think the point of source control is, then, if not to provide a versioned, integrated backup of your project?
Wow. Yes, backing stuff up is part of the point of source control, but not in a daily, disaster recovery sort of way. You need to move beyond keyword comprehension.
-
@greybeard RCS: https://s-media-cache-ak0.pinimg.com/736x/2f/e3/bb/2fe3bb4b6bbfde1e8ecd09e9d76a8c64.jpg
-
@greybeard said in When did Git become terrible? Let's track down the specific commit...:
@dkf Yeah, these whippersnappers bellyaching about git. When I were a lad, I had to control source with RCS. Uphill, both ways.
I am eternally thankful I never had to use SCCS.
And visual sourcesafe was one of those machines that just fell to the ground
-
@wharrgarbl said in When did Git become terrible? Let's track down the specific commit...:
visual sourcesafe
-
@hungrier said in When did Git become terrible? Let's track down the specific commit...:
git turnleft
git turnleft --go-right
git turnleft
git turnleft
git turnleft
Should be the same as
go-right
Right?
-
@arantor said in When did Git become terrible? Let's track down the specific commit...:
and in the case of Git, it really is a backup - every person that has the repo has a backup of the repo including its history at the same time.
Which is fine (well unless your repo is too large to fit on a typical laptop drive, then it's bad.)
But the problem is with Git: the person working on the new code has the only copy of that work-in-progress. And there's no way to give that copy to another person without being required to write an asinine commit message.
Again I'd say it's an obvious design flaw, except it's obvious nothing here was designed.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
And there's no way to give that copy to another person without being required to write an asinine commit message.
-
What always seems to be missing from these discussions is the significant differences between what it means to be "distributed" vs. "centralized" from an overall perspective (i.e. not just source control). Some things really benefit from distribution, but other things (including 99% of corporate/business activities) are better served when things are centralized.
Alas, people are "fan boys" and jump on the shiny new thing; not because it is actually better, but simply because it is new....
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
Which is fine (well unless your repo is too large to fit on a typical laptop drive, then it's bad.)
Typical recommendations is that a Git Repo [neglecting some of the new LFS implementations] should stay under 200MB. However bloat (eg committing binaries) is rampant, as are massive (rather than focused) repositories.
-
@thecpuwizard said in When did Git become terrible? Let's track down the specific commit...:
What always seems to be missing from these discussions is the significant differences between what it means to be "distributed" vs. "centralized"
No, people always bring that up. Usually when trying to justify why Git lacks some useful feature.
What I don't understand is why "distributed" and "centralized" are mutually-exclusive. Why couldn't Git use both models simultaneously?
-
@asdf said in When did Git become terrible? Let's track down the specific commit...:
@lb_ said in When did Git become terrible? Let's track down the specific commit...:
That way you can easily look back at commit messages and understand why changes were made without having to go do detective work to find the original commits, if they even exist anymore.
You're assuming the original commits have sensible size and names. From my experience, the commits from a bugfix branch usually have the following names: "trying to fix x", "trying to fix x again", "fix", "argh", "last try", "prepare for review", "implement review suggestions", "code style fix", "fix build" etc. A single "fixed x" commit would be way more helpful.
I actually use
git rebase --interactive
and do multiple passes at reordering, editing and squashing commits before they're in a public branch.Whether you squash everything depends a lot on how much non-published commits you have and the types of changes you're dealing with.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
Why couldn't Git use both models simultaneously?
Because the people who do most development of git itself don't want to do that. It's not particularly difficult to do, FWIW. Other DVCSs manage the task. For example, Fossil synchronizes before and after every commit to a non-private branch and at a few other times too. OTOH, I believe that that works less well with very large teams; if your team consists of a hundred active developers (mine doesn't!) frequent synchronization might not be for you…
-
@arantor said in When did Git become terrible? Let's track down the specific commit...:
@masonwheeler and in the case of Git, it really is a backup - every person that has the repo has a backup of the repo including its history at the same time.
Except that you only have a backup of pushed (public) branches. There is no backup of reflogs, local commit hooks, local settings, stashes or private branches.
-
@jbert said in When did Git become terrible? Let's track down the specific commit...:
@arantor said in When did Git become terrible? Let's track down the specific commit...:
@masonwheeler and in the case of Git, it really is a backup - every person that has the repo has a backup of the repo including its history at the same time.
Except that you only have a backup of pushed (public) branches. There is no backup of reflogs, local commit hooks, local settings, stashes or private branches.
Yeah, the backup benefits are really a side effect. @masonwheeler is confused when he starts talking about how the point is for it to be a backup of your code. The point is to be the repository for your code (just focusing on the storage here, ignoring other stuff as irrelevant to this discussion of how blakey misuses git). It's a way to collaborate with others ( I'm also ignoring the cases where you're the only user / contributor / whatever).
-
@boomzilla said in When did Git become terrible? Let's track down the specific commit...:
@masonwheeler is confused when he starts talking about how the point is for it to be a backup of your code. The point is to be the repository for your code (just focusing on the storage here, ignoring other stuff as irrelevant to this discussion of how blakey misuses git). It's a way to collaborate with others ( I'm also ignoring the cases where you're the only user / contributor / whatever).
-grade reading comprehension strikes again!
@masonwheeler said:
About 70% of what it is, at least; the rest is adjectives. The point of source control is to provide a versioned, integrated backup of your code.
That's what a "repository for your code" is: a backup system that's versioned (maintains history) and integrated (allows multiple people to add to it in an orderly fashion).
-
@masonwheeler said in When did Git become terrible? Let's track down the specific commit...:
@boomzilla said in When did Git become terrible? Let's track down the specific commit...:
@masonwheeler is confused when he starts talking about how the point is for it to be a backup of your code. The point is to be the repository for your code (just focusing on the storage here, ignoring other stuff as irrelevant to this discussion of how blakey misuses git). It's a way to collaborate with others ( I'm also ignoring the cases where you're the only user / contributor / whatever).
-grade reading comprehension strikes again!
It's good that we can agree that you're being dumb when you went on to write this:
@masonwheeler said:
About 70% of what it is, at least; the rest is adjectives. The point of source control is to provide a versioned, integrated backup of your code.
That's what a "repository for your code" is: a backup system that's versioned (maintains history) and integrated (allows multiple people to add to it in an orderly fashion).
-
@masonwheeler said in When did Git become terrible? Let's track down the specific commit...:
That's what a "repository for your code" is: a backup system that's versioned (maintains history) and integrated (allows multiple people to add to it in an orderly fashion).
Look here, @masonwheeler, hedges are for backups too!
-
@masonwheeler said in When did Git become terrible? Let's track down the specific commit...:
That's what a "repository for your code" is: a backup system that's versioned (maintains history) and integrated (allows multiple people to add to it in an orderly fashion).
TIL the definitive master version of a project's code is also a backup.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
What I don't understand is why "distributed" and "centralized" are mutually-exclusive. Why couldn't Git use both models simultaneously?
How would that work? Aren't
distributed
andcentralized
opposites?How can something be centralized, all in one central location, if it is spread around, i.e., "distributed"?
-
@wharrgarbl said in When did Git become terrible? Let's track down the specific commit...:
@blakeyrat TFS was very complicated to back up last time I had a coworker trying to maintain it
Really... Click a button on the admin console. Select a share. Select schedule. Done.... Hierarchical Full, Differential and Log shipping (default every 15 minutes)....
How hard is that?
-
@thecpuwizard I'm either confusing it with SharePoint, or it got a bit better in the last 10 years, or both.
-
@wharrgarbl said in When did Git become terrible? Let's track down the specific commit...:
@thecpuwizard I'm either confusing it with SharePoint, or it got a bit better in the last 10 years, or both.
SharePoint is almost always a PITA. What I described for TFS has been true since 2010
-
@jbert said in When did Git become terrible? Let's track down the specific commit...:
Whether you squash everything depends a lot on how much non-published commits you have and the types of changes you're dealing with
And so much more.... It really depends on what value you get from tracking and learning from work habits [at the team level, not really talking about at the management level].
Every piece of information has potential value. Therefore the removal of any information is a loss of that potential value. Additionally delays in other team members having information available is another source of lost potential value.
-
@asdf said in When did Git become terrible? Let's track down the specific commit...:
You're assuming the original commits have sensible size and names
I have fired people for meaningless commit messages. Also every commit should be associated with some work tracking. Using TFS as an example, this would be a Task, which has a detailed explanation of what and how you are going to do the work. Regardless of work tracking system, every character of change in the code should be directly related.
-
@blakeyrat said in When did Git become terrible? Let's track down the specific commit...:
What I don't understand is why "distributed" and "centralized" are mutually-exclusive. Why couldn't Git use both models simultaneously?
Because they are mutually exclusive. For centralized all information (not just source code), is immediately available and accessible to all interested parties. For distributed there is the concept of work locally, and at some time later "push" to a sharable environment (which may support a later push to another higher level environment).
Lets look at an actual example. I do (pro-bono) work for an international organization. Each country has a "master chapter". In the USA there are 5 regional heads, and then heads within each state, then local organizations and finally individual chapters (thousands of them).
This is ideal for distributed. Information that pertains only to one local chapter is in their repositories only. When collaboration is needed then the appropriate repositories at other levels is set as additional remotes (not origin).
Many things never leave a given scope.
-
@raceprouk said in When did Git become terrible? Let's track down the specific commit...:
TIL the definitive master version of a project's code is also a backup.
Of course it is.
If "the definitive master version" of your code is in source control rather than on your dev system, that means you're working on a project that takes advantage of the "integrated" functionality, as part of a development team. This doesn't change the basic nature of the repo.
-
@masonwheeler What the fuck are you on about? Do you have any idea what source control actually is? Because right now, it sounds like you have no idea.
-
"the definitive master version of your code" - is only a very small part of the system. All of the who, what, when, why along with other artifacts are key to having comprehensive knowledge of the system. A portion of this is having the information on the path taken to get from point A to point B
-
@raceprouk of course I do. Do you? Because what I said only makes sense if you're familiar with the way source control interoperates with build machines, which I assumed was the case based on what you said, because what you said only makes sense in the context of a build machine.
The canonical source code for the project is the code that official builds are built from. In a small project with only one or a very small number of developers, it's quite possible for this to come directly from one of the devs' computers. But on anything larger, that becomes impractical, and the standard solution is to set up a build machine that integrates with your source control system to automatically pull the code from it and maker builds.
Does that explain what I was saying any more clearly?