mcc,
@mcc@mastodon.social avatar

Okay so

A quirk I have is I don't like it when IDEs interface with my version control system. That is MY version control system. Don't touch my stuff, IDEs

But! I have another quirk, which is that I don't like git, and I use Mercurial for everything

And the quirks cancel each other out! I check my projects out in Mercurial, which is obscure, so IDEs don't support it, so their VCS integration fails and I am happy

Until

This month, in the new version

Android Studio added Mercurial support!!!

mcc,
@mcc@mastodon.social avatar

My toolchain is no longer obscure and hipsterish enough to be free of IDE integration!!! The toolchain is gentrifying!!! I guess now I gotta switch to Pijul

porglezomp,
@porglezomp@mastodon.social avatar

@mcc they just went from 1.0 alpha to 1.0 beta (a few months ago?) seems like a decent time.

gureito,
@gureito@peoplemaking.games avatar

@mcc i wonder if that's part of the reason i use fossil 🤔​

gizmomathboy, (edited )
@gizmomathboy@mastodon.xyz avatar

@mcc make your ide weirder by building it up from plugins...like starting with (neo)vim and add plugins until you get the ide you want ;-)

As a vim user, but not ide's in general, I have no idea how painful this would be.

My guess is that neovim would be less painful than vim, mostly because plugins are written in Lua IIRC

aeva,
@aeva@mastodon.gamedev.place avatar

@mcc does this pijul thing solve the "my project has lots of binary files in it that change regularly" problem

porglezomp,
@porglezomp@mastodon.social avatar

@aeva @mcc it has diffs optimized for large binary files, doesn’t require downloading every revision of them, and they’ve got an intent to add file locking support, but I think it’s still probably less suited to it than centralized VCSs are.

oblomov,
@oblomov@sociale.network avatar

@mcc jokes aside, isn't there a way to disable revision control support in the IDE?

AT1ST,
@AT1ST@mstdn.ca avatar

@oblomov @mcc Give it bad credentials, so that when it tries to integrate, it fails.

(There might be options to ask for a prompt every time it wants to check out a file, but that might just be adding a wishlist that's in UE4/5 and Perforce integration.).

realn2s,

@mcc
😳💜

The hg command are so much cleaner.
And the little detail like specifying versions not by the full hash 🥰

michelin,
@michelin@hachyderm.io avatar

@mcc I prefer Mercurial too, which means my personal projects tend to be on less mainstream forges which is fine... but sometimes it's annoying, like when projects to analyze software supply chain security only support GitHub projects 😐

irenes,
@irenes@mastodon.social avatar

@mcc oooo

good strategy. sorry it no longer works :/

dalias,
@dalias@hachyderm.io avatar

@mcc I just hate IDEs so.. 🤷

mcc,
@mcc@mastodon.social avatar

@dalias yes, but horrifyingly although android studio is based on gradle, in my experience you do not get exactly the same results building with command line gradle than in android studio

inthehands,
@inthehands@hachyderm.io avatar

@mcc
How is Mercurial these days? I liked it way back when, but git took over and I had to relent and just use it, and haven’t touched hg in years.

mcc,
@mcc@mastodon.social avatar

@inthehands Hasn't really changed much in years. Depends on when you stopped using it I guess? They replaced the janky "branch" feature with something called "bookmarks" which is much better, and then they tried to introduce something called "phases" that doesn't really add anything and I've never heard of anyone using.

mcc,
@mcc@mastodon.social avatar

@inthehands Someday I will write a tutorial. I believe for it to be really good you have to turn on three or four plugins which are shipped by default but off by default.

inthehands,
@inthehands@hachyderm.io avatar

@mcc It’s been a decade at least. (!) I do hope I have occasion to use it again. My memory is loosely “same features as git, but with less stupid names.”

mcc,
@mcc@mastodon.social avatar

@inthehands to me hg is basically just "svn with push and pull" and i love svn

pull and update are separate verbs and this is so important to me. mercurial seems to give you verbs for actually interacting with & reshaping the tree whereas all git wants to do is interact with your current source checkout and lots of tree operations seem to require making the branch you want to operate on your current source checkout. It feels unnecessary. (also: git often requires you to make a named branch)

byobattleship,
@byobattleship@mastodon.gamedev.place avatar

@mcc My experience with Mercurial was that its command mnemonics actually made sense, and it was nice to use...but nobody else knew how to use it, so my attempts to use it in collaborative projects just added a bunch of extra friction.

Eventually I gave up and just moved to Git. :\

mcc,
@mcc@mastodon.social avatar

@byobattleship so here is the thing there are no longer any convenient places to host mercurial repos. so using mercurial pretty much means pushing and pulling to github and everyone you interact with will just be using git

tym,

@mcc @byobattleship I’m afraid I’m just another reply from someone who always liked mercurial better, but succumbed.

I’ve also always figured that all along it was github that people really liked and that made git popular, rather than git itself

chandlerc,
@chandlerc@hachyderm.io avatar

@mcc @byobattleship how is this workflow for you? Any pointers on making it work well?

I much prefer the local mercurial experience, but have been too nervous of living in that world with an inherently GitHub upstream.

mcc,
@mcc@mastodon.social avatar

@chandlerc @byobattleship it's actually pretty straightforward. Use bookmarks for your branches, never "hg branch". Internalize "anonymous branches are local-only, bookmarked branches can be pushed and pulled". Use gitignore not hgignore. That's pretty much it.

The one big critical issue is hg git, last I checked, didn't support git lfs, which is essential for some applications. But they were working on it last I checked.

mcc,
@mcc@mastodon.social avatar

@chandlerc among my unfinished blog projects is an hg tutorial with my personal workflow.

mcc,
@mcc@mastodon.social avatar

@chandlerc BTW more notes on hg-git:

  • There is one tiny nightmare: If you use hg strip, you can sometimes get a bizarre message the next time you use hg-git about a commit not being found. You then have to open a file named .hg/git-mapfile and manually delete the line with the "not found" hash. This… should not work this way, IMO. I should probably try to write a patch actually

  • Take note of this from hg help hggit, u can use git hashes for both input & output but u have to mark them as such

mcc,
@mcc@mastodon.social avatar

@chandlerc u asked

chandlerc,
@chandlerc@hachyderm.io avatar

@mcc absolutely, this is super interesting to inform whether I should really try out this workflow. TBH, I'm reassured and more strongly considering it. =D

jeeger,
@jeeger@mastodon.social avatar

@mcc @byobattleship Sourcehut can host mercurial repos, but I don't think it's "convenient".

TomF,
@TomF@mastodon.gamedev.place avatar

@mcc @inthehands git is a database, not a VCS. You could build both hg and svn on top of git. And people often try, but very badly. Awful fucking thing.

floooh,
@floooh@mastodon.gamedev.place avatar

@TomF @mcc @inthehands unpopular opinion I guess, but I think one of git's main problems is that it is a distributed VCS, which then leads to all sorts of wacky "git workflows" which try to turn it back into a centralized VCS (because centralized makes a lot more sense for most teams)

andrewwillmott,
@andrewwillmott@mastodon.gamedev.place avatar

@floooh @TomF @mcc @inthehands Git makes some hard things simple (distributed VCS etc.), at the expense of making some simple things hard.

It is one of life's great amusements that arguably its main popularity driver has been a website, git_hub_, that focuses on providing a centralised version of it.

mcc,
@mcc@mastodon.social avatar

@TomF having written code for a git client, I unfortunately must conclude that if it is a database it is not a very good one. If you try to use its format to store something other than what it expects you to store it fights back in various ways. I think this is the case people use "leaky abstraction" to describe.

oblomov,
@oblomov@sociale.network avatar

@mcc @inthehands OK I'm a bit confused by this criticism, since for does have “split semantics” although with different names (fetch and merge) and nearly every single operation I can think of acts on any reference regardless of whether it's a (named) branch or not (except for one that specifically manipulate branch names), but I also don't understand what you mean by “tree operations”, so I'm probably missing the core of the criticism.

reedbeta,
@reedbeta@mastodon.gamedev.place avatar

@mcc @inthehands
This piques my curiosity. If you get around to it someday, I'd be interested in reading more compare/contrast between git/hg!

asmodai,
@asmodai@mastodon.social avatar

@mcc @inthehands There's the Rust speedup and dirstate V2 as well.

tthbaltazar,
@tthbaltazar@chaos.social avatar

@mcc
I tried looking at what the difference is between mercurial and git and couldn't find anything

why do you prefer mercurial over git?

mcc,
@mcc@mastodon.social avatar

@tthbaltazar because the interface for git is a medieval torture device and git's command line interface is so deeply intertwined with its file format that all attempts to make an alternate or wrapper interface just wind up being the command line interface with fewer handles on critical components

git is constantly printing the most bizarre error messages in the least helpful way

argv_minus_one,
@argv_minus_one@mstdn.party avatar

@mcc

Mercurial has its own problems, like:

  • Three different branching models, none of which are deprecated
  • No straightforward way to push the deletion of a commit
  • No commit staging
  • Branches and bookmarks are not namespaced to the originating remote repository
  • Branches cannot be renamed
  • Seemingly unnecessary restriction of no more than two parents per commit
  • Slow, because Python
  • hg-git doesn't preserve commit hashes
  • TortoiseHg is increasingly buggy
mcc,
@mcc@mastodon.social avatar

@argv_minus_one I do note about half these issues go away if you simply never type "hg branch".

I don't understand what you mean by hg-git "not preserving commit hashes".

argv_minus_one,
@argv_minus_one@mstdn.party avatar

@mcc

If you try to hg checkout SOMEID in an hg-git repository, where SOMEID is the SHA1 hash of a Git commit in that repository, it won't work. You have to use a special revset to select a Git commit by SHA1 hash with hg-git.

Similarly, if you use hg identify to get the current commit hash and give it to a Git user, it won't work. You have to find and give them the Git commit hash, not the Mercurial commit hash.

This is not awesome.

argv_minus_one,
@argv_minus_one@mstdn.party avatar

@mcc Only two of the above issues can be avoided by never typing hg branch. That's far from half.

benlindsay,

@mcc @tthbaltazar
Agreed, but my philosophy with tech tooling is

🎶And if you can't be with the one you love, honey
Love the one you're with🎶

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • DreamBathrooms
  • thenastyranch
  • ngwrru68w68
  • magazineikmin
  • khanakhh
  • rosin
  • mdbf
  • Youngstown
  • slotface
  • everett
  • cisconetworking
  • kavyap
  • tacticalgear
  • InstantRegret
  • JUstTest
  • Durango
  • osvaldo12
  • ethstaker
  • modclub
  • GTA5RPClips
  • Leos
  • cubers
  • tester
  • normalnudes
  • megavids
  • provamag3
  • anitta
  • lostlight
  • All magazines