News for hackers. Stuff that matters.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by funcDropShadow on Monday January 22, 2024 @07:53AM (#39088958)
Even a force push doesn't destroy the reflog or runs the GC server-side. I wonder how you can accidentally loose data with Git. I've seen lot's of people not being able to find it, but really destroying it is hard.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by sasham on Monday January 22, 2024 @08:05AM (#39089068)
He force pushed a diverged branch or something like that, and we only found out after a while. We were eventually able to recover because someone didn't pull. But it was not a fun experience :D
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by bauruine on Monday January 22, 2024 @08:20AM (#39089210)
So multiple people did a git reset --hard origin/master and nobody complained or checked what and why this was done? That's not "one data scientist with the wrong command" but the whole team that fucked up hard IMHO.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by swells34 on Monday January 22, 2024 @09:36AM (#39089935)
I think you just sold their pitch with this comment... I, like many many people here, have done quite a bit of product design. What do you call it when a bunch of people use your product, and it breaks for several of them? That generally indicates your product is weak, or has a very rough UI.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by MrDarcy on Monday January 22, 2024 @10:10AM (#39090246)
The pitch simply wasn’t true. Data was not destroyed and was restored hours later.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by swells34 on Monday January 22, 2024 @10:41AM (#39090617)
It's a pitch. The story has obviously been embellished and polished and condensed, ready public consumption. Being pedantic against it is not productive.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by MrDarcy on Monday January 22, 2024 @11:54AM (#39091741)
Politely disagree. It’s productive because hopefully future teams who launch on HN ask each other, “Is what we’re saying true?” during all those polishing and condensing sessions. If they don’t, the risk is crossing a line that damages the reputation of the team and undermines months if not years of hard work.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by yjftsjthsd-h on Monday January 22, 2024 @11:02AM (#39090922)
If the pitch is dishonest, why would I ever trust them with something as vital as my VCS? (And yes, "embellished" means dishonest)
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by spiderice on Monday January 22, 2024 @11:37AM (#39091484)
That's a creative way to defend a dishonest pitch
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by water-your-self on Monday January 22, 2024 @01:21PM (#39093147)
This is not a pedantic criticism.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by lowbloodsugar on Monday January 22, 2024 @11:56AM (#39091794)
For many of us, the story rings true. We have ourselves had horror stories that we did manage to recover from after a few hours of fearfully googling, and we know of other, less capable friends and colleagues who were unable to recover the data and who just accepted the loss.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by TexasMick on Monday January 22, 2024 @02:52PM (#39094474)
It's kinda crazy argument, I think data loss is way more likely with a centralised system than a decentralised system.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by lowbloodsugar on Monday January 22, 2024 @11:19PM (#39099602)
You think Microsoft losing GitHub repos is more likely than poor bastards trying to make sense of the git command line? You think these guys are going to do a worse job with their centralized service?
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by TexasMick on Tuesday January 23, 2024 @03:18AM (#39100762)
People have lost data on GitHub from repositories being copyright striked for example.

At least with git, every developer has a copy of the full history so full data loss is impossible really. What happens if this company folds? You're left with some proprietary repo that you suddenly have to workout how to self host.

It just doesn't make sense when compared to just learning git which is definitely the most fruitful thing a developer could learn at the start of their career.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by Wytwwww on Monday January 22, 2024 @04:13PM (#39095553)
But that seems like pretty much the equivalent to "rm -R *"? And also just a permission/configuration issue.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by bauruine on Monday January 22, 2024 @05:28PM (#39096418)
Or drop table|database or delete from. To _nearly_ lose data it took multiple clueless engineers and not detecting the issue for months.

I wonder how Diversion handles operations that possibly delete data. Whats their solution?

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by sasham on Monday January 22, 2024 @05:40PM (#39096550)
To put into perspective, that was in 2014 :D There were no branch protections, and git was even harder to use. Plus everyone was new at git, obviously (we started in 2013 with mercurial, which was still a legit thing to do, and switched to git).
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by mlhpdx on Monday January 22, 2024 @08:00PM (#39097928)
Yeah, these days stopping force pushes is a checkbox (default?) in GitHub.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by lonelyasacloud on Monday January 22, 2024 @08:55AM (#39089549)
> but the whole team that fucked up hard IMHO.

Multiple individuals with similar problems would tend to imply systematic inadequate training. Or the enterprise concerned adopting an inappropriately complex system for its intended userbase.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by willy_k on Monday January 22, 2024 @09:57AM (#39090120)
Or, git is both very complex and very useful, and a large portion of its users have a poor understanding of git but enough for it to be a useful tool. If you want to do source control (which you do), then you’re investing time into learning git and/or fixing git, or maybe using a project like this.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by keerthiko on Monday January 22, 2024 @11:15AM (#39091156)
You literally just said what GP said in different words, but prefaced it with "Or" as if it's a disagreement. What you said boils down to "inadequate training".
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by willy_k on Monday January 22, 2024 @11:33AM (#39091414)
We both agree that they didn’t know the tool, but GP seems to blame them for deciding to use the tool without training. I was more or less defending their choice to use git, while also acknowledging the potential of a tool like Diversion. My interpretation of GP was that it doubled down on git, while claiming that anyone using git without understanding it is “doing it wrong”, which I agree with in principle but not in practice, as I argued in my initial comment.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by NateEag on Monday January 22, 2024 @08:54AM (#39089533)
And the tool made a screwup that hard not only possible, but very difficult for the victims to recover from.

Doesn't say a lot for git's usability.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by JeremyNT on Monday January 22, 2024 @10:15AM (#39090310)
A couple of thoughts about this:

One is that the possibility of overwriting history / etc is a really powerful and useful feature, but one that should only be used with some consideration, hence being gated behind the scary '--force'. The fact that git provides one the ability to discard and overwrite commits for a ref shouldn't be an endorsement of doing so freely. I'm glad git has this capability though and any "git alternative" would be all the worse if it didn't provide it, IMO.

Two is that if the concern is git's usability - i.e. the "problem" here is that it's too "easy" for users to do destructive actions accidentally - well, there are ways to solve that other than to reinvent all of git. There are plenty of alternative git UIs already, and an alternative UI is a great way to be "wire compatible" for existing users but still help protect those novice users from footguns.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by rusk on Monday January 22, 2024 @10:40AM (#39090597)
It doesn’t overwrite the commute though. It inserts new ones and resets the branch pointer … doesn’t seem like you’d need a whole new tool to mitigate this - just an automatically generated tag or something when you —force-push - would be easy to do if there was demand for it …
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by NateEag on Monday January 22, 2024 @01:16PM (#39093073)
That all makes sense and mirrors many of my own thoughts.

Though I'll say that "--force" isn't necessarily a "scary-sounding" option name unless you're used to Unix CLI naming conventions.

Further, the warnings git gives you about this are virtually inscrutable if you don't already understand what's happening.

A good interface to "blowing away history" would give you a brief summary of what will actually be gone, e.g.:

"If you go ahead with this overwrite, the following changes will be completely removed from the repo:

a3bf45: Fix bug in arg parsing 22ec04: Add data from 2024-01-17 scraper run ...

Are you SURE you want to completely destroy those commits? (Y/n)"

and if user says "Y", output should log all removed commits and also say:

"These commits can still be recovered until <date>. If you realize you want these back before then, run the following:

<command to restore commits>"

Generally, I think it's a mistake to put UI improvements in a secondary tool.

If there are issues that need fixing, get those changes in the canonical project, because layered patches on top will always be short of maintainers and behind the main project.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by xorcist on Monday January 22, 2024 @03:35PM (#39095052)
> Are you SURE you want to completely destroy those commits? (Y/n)

While there is a lot of user interfaces that could be improved, I believe the above have empirically been shown to be inferior to the alternative "re-run this command but add scary option to proceed".

Users habitually answer "Y" to questions like the above all the time. And certainly after a few times it becomes routine for anyone. But having to re-enter the command and type some a whole word like "overwrite", "force" or "i-know-what-im-doing" is a whole other roadblock. The example is especially ill-chosen to have Y as the default option.

Any operation in git that destroys so many commits will include a list of commits that is destroyed, similar to what is suggested here, and trying to push the resulting repository will say exactly how many commits will be removed, and require rerun with force option (together with the necessary privileges). So reality is already not far from what you suggest, but with more fail safes.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by NateEag on Tuesday January 23, 2024 @11:52AM (#39105937)
You make a good point about "Y/n" being more dangerous than refusing and requiring an explicit option be passed.

The clear warning about what commits will be lost is not at all how I remember force-push working.

That said, I usually use magit in emacs for git and understand the force options well, so I haven't actually looked at the standard push failure warning in years. Maybe I'm remembering wrong, or perhaps it's been improved in recent versions.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by funcDropShadow on Monday January 22, 2024 @10:12AM (#39090272)
They used --force which is usually the flag to say: Here there be dragon. Be careful.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by mbreese on Monday January 22, 2024 @01:10PM (#39093001)
Yeah, I can’t see how use of a —-force flag by people who didn’t know what they were doing is enough of a reason to switch to a different VCS (let alone write one). The issue was people using a tool in a way that they shouldn’t have. Which isn’t a technical problem, but a training problem. You can’t fix people problems with technology, so I’m sure there will be other footguns in this new system that someone else will figure out how to almost lose data.

Git is great in that it is flexible and powerful. But that power leaves some tools open to people who don’t know what they are doing… that’s the trade off.

(Now something that better handles non-code assets and large data files, I’d be much more willing to listen to that pitch.)

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by umanwizard on Monday January 22, 2024 @08:10AM (#39089107)
So the work wasn’t actually destroyed, and you were able to recover it. So all the people pointing out how implausible that part of your pitch was were right, and you were in fact just lying.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by sasham on Monday January 22, 2024 @08:29AM (#39089322)
That's really not the main point of the post, but you're right I should have been more precise.

Edit: updated in the top text now!

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by ysavir on Monday January 22, 2024 @08:47AM (#39089459)
I think the point being made is that you spent a lot of your opening post talking Git, and lead with that bit, rather than with Diversion. What makes Diversion different is added in the end, after you've spent time trying to convince Git fans that their current tooling isn't good. Worse, the examples you listed of why Git is bad is more reflective of configuration and processes than Git itself.

This is ultimately a very weak pitching strategy. The first thing you convey to your potential users is insecurity--an insecurity that people won't choose your product over Git. And it's hard to want to buy something from someone that isn't secure enough about their product to pitch the product first, and answer questions/make comparisons after, as a form of clarification.

Alternatively, instead of doing a comparison to Git, you could start with a list of "have you experienced these Git issues? <list of problems>. Here's how Diversion improves on Git in this regard." In this case you're actually solving people's problems, rather than looking like you're grasping at straws to complain about Git and justify an alternative.

FWIW, I personally have 0 interest in a cloud-first version control. I like the cloud as a form of backup and syncing with team members, but I ultimately want a version control that works as well offline as it does online, and prioritizes the local experience.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by umanwizard on Monday January 22, 2024 @08:55AM (#39089542)
The main point of your post is how much better you are than git. You support this main point by making up lies about git. This does not make me personally interested in trying your product.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by IlliOnato on Monday January 22, 2024 @11:43AM (#39091577)
From my point of view, it's not that much about lying, for me the OP demonstrates a degree of incompetence of the post writers about Git.

The fact that they don't seem to fully understand working of Git (not on the level of Git developers, just the level of Git administrators/users) does not inspire trust in their competence to create a Git alternative.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by lawgimenez on Monday January 22, 2024 @08:27AM (#39089300)
So you were able to recover and did not lost a months work of data? Your story just doesn’t make sense. Come on.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by egaldv on Monday January 22, 2024 @09:04AM (#39089636)
Indeed you're right the work that was erased from BitBucket was restored from one of the employees that didn't yet pull, the post was edited accordingly.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by umanwizard on Monday January 22, 2024 @09:29AM (#39089865)
Wouldn’t you still have been able to recover it even if everyone did pull, assuming GC had not run on everyone’s machine?
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by sampo on Monday January 22, 2024 @05:14PM (#39096265)
> the work that was erased from BitBucket was restored from one of the employees that didn't yet pull

Actually those commits that you considered lost, were still stored on everyone's personal computer in your team. You just didn't know how to use `git reflog` to find them.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by sbergot on Monday January 22, 2024 @08:56AM (#39089555)
For your information you can use the reflog command to find the previous head commit and restore your branch. It takes 10 minutes and then you learn to disable force pushing on the main branch.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by swells34 on Monday January 22, 2024 @09:39AM (#39089956)
I find it funny how many comments in this angry rebuttal section actually endorse a Git replacement.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by spiderice on Monday January 22, 2024 @11:43AM (#39091584)
I find it funny how many comments you've made in this thread missing the point. People are reacting against the dishonest pitch, not the product.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by plagiarist on Monday January 22, 2024 @09:50AM (#39090054)
It's an interesting new application of that joke, "when I have a question on Linux I use a sock puppet account to leave an obviously wrong answer which prompts dozens of corrections."

I'm trying to imagine how to generalize this to other products. I think if I state the competing product has negative feature X, but also intentionally get some details confidently incorrect or deliberately feign incompetence, you get a group of people confirming X.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by renewiltord on Monday January 22, 2024 @11:59AM (#39091852)
Just somewhat surprised because if anyone did a `git pull` they'd get divergent history and therefore a merge on default configuration. It would take a lot of manual work to ruin more than one copy of the repo.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by cqqxo4zV46cp on Monday January 22, 2024 @08:01AM (#39089024)
Destroying it and nobody knowing how to recover, or that it can be recovered at all, it are identical.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by billpg on Monday January 22, 2024 @10:39AM (#39090591)
I configured my github to only allow commits with an anonymised email address. Time passed and I used another machine on which I had already opened that repo before. I pulled my recent work successfully, wrote stuff and then committed and pushed.

Github rejected my commit as I had the wrong email address. I then had to try and work out how I delete a commit but keep all my changes so I could commit it all again but with the correct email address.

I'm not sure exactly what I did but in my ham-fisted experimentation I deleted the commit and restored my local copy back to the way it was before my commit, losing all my work that day.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by BossingAround on Monday January 22, 2024 @10:47AM (#39090691)
If you had already committed, `git reflog` should have still found your changes (even after you deleted the commit and restored the local working tree) unless you deleted and re-cloned the repository.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by fesc on Monday January 22, 2024 @12:27PM (#39092299)
Honestly I don’t understand why not more people use a GUI for git.

What you describe would be 1 Minute of work and maybe 10 clicks with a very low probability of shooting yourself in the foot in Tower.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by noufalibrahim on Monday January 22, 2024 @10:48AM (#39090708)
I agree. It's quite hard to actually destroy data in git. Even with the so called "destructive" commands, walking through the reflogs can usually restore work that was accidentally deleted or whatever.
Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by grumbel on Monday January 22, 2024 @10:55AM (#39090794)
> doesn't destroy the reflog or runs the GC server-side.

Git doesn't give you access to the server side reflog either. So it's of not much use if you don't control the server.

As for losing data with Git, the easiest way to accomplish that is with data that hasn't been committed yet, a simple `git checkout` or `git reset --hard` can wipe out all your changes and even reflog won't keep record of that.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by xorcist on Monday January 22, 2024 @11:58AM (#39091831)
That data not committed to git can not be recovered by git should hopefully not surprise anyone.

Neither is it the fault of your version control system, or any other system really, if you cannot access your server and are without backups.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by bvrmn on Monday January 22, 2024 @11:18AM (#39091215)
> As for losing data with Git, the easiest way to accomplish that is with data that hasn't been committed yet

Also Git has pretty awful behavior losing changes when one doesn't press "Save" in their IDE. Bad, bad Git.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by Spivak on Monday January 22, 2024 @11:55AM (#39091757)
Your applications also shouldn't lose work when you don't press save, this is the entire impetus for the "recover unsaved work" in most document editors. A version of Git that shunted uncommitted changes to a special named stash whenever you did anything destructive would be a positive thing.

It's what I end up doing manually anyway but why make a system where the default behavior is destructive and I have to remember every.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by xorcist on Monday January 22, 2024 @12:10PM (#39092007)
It may be prudent to note that git by default is rather kind in that way that it will not change your data unless you explicitly force it to with --force or --hard. I think git, as hard to learn as it can be, sometimes have a bit of an unfair reputation here. It's not all bad.

Not only is it quite careful about not losing data, someone actually took the time to make it spit out messages that not only describes what just happened, but also gives suggestions of what to do next depending on how the user wants to proceed. That adds a level of discoverability that is usually associated with dialog based guis. The quality of these messages can sometimes be surprisingly good, far from the Clippy-level helpfulness you sometimes see.

There are a few exceptions to the principle of not losing local changes, where you explicitly restore an old version of a file for example. But saying the default behaviour is destructive really gives a false impression.

But yes, you are absolutely right that a system to recover unsaved work is a good thing, but I would argue that it belongs at the editor level, not in a version control system. A user could have a number of files open that have local changes. The editor has a much better idea in which order changes were made, and which changes hasn't even been committed to disk yet.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by whartung on Monday January 22, 2024 @02:57PM (#39094557)
I can't say I'm widely traveled, I have no idea how desktop Office works, but Apple does this so well.

Using their desktop apps, Pages, Keynote, Numbers, TextEdit, Preview, I never hit "Save". I just close the apps. When I come back, the windows reopen right where I left off.

I wish emacs did this. I honestly don't know what it would be like for a code editor to be "constantly saving". I guess I would adapt, but there are times when I do all sorts of changes and go "Ah, this isn't right" and just kill the buffer. The ultimate undo.

But there's a great feeling, to me, when I go to close the app (or shutdown the computer) and it just closes. No prompts, no warnings, just saves its state, shuts down, and comes back later. And with the ever popular "naming things" issue of computers, I have a bunch of just "Untitled" windows. They're there when I open the app, and that's all I need to know.

The nag factor and cognitive load reduction of that is just unmatched. "Just deal with it, I'll come back later, maybe, and clean it up". One less thing.

Re:Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative by Brian_K_White on Monday January 22, 2024 @11:26AM (#39091329)
A month of work for a whole team was never even committed or stashed let alone pushed? That is not a git problem.