Hacker News new | past | comments | ask | show | jobs | submit login

Weird question; have you looked at perforce?

My previous and current company use perforce but many people (often those who recently join) are decrying that perforce is less elegant than git, but, realistically and based on your own criteria it would be "better" for the connected case.

I'm personally a big fan of 'offline/local-first' being a thing, but I'm a sysadmin not a developer.




I use Perforce everyday since it aligns better to the needs of the games industry.

I have my problems with it, but once you understand it I find the workflow quite simple.

If you don't really need the decentralization I think it aligns quite well with how people expect version control to work. You make edits to your data, once you're done, you send them to the server to be shared with other people.


I’ve had to use perforce before and was not a fan. Granted, I didn’t have to use it full time and can’t claim to be an expert, but I hated the notion of locking files, change lists, yuck. All of it felt so clunky compared to git.


Funny - I used P4 for about 7 years before switching to Git 2 years ago, and Change Lists are what I miss most from P4. For me it is extremely common to work on multiple changes in parallel, on the same branch or different branches, and organizing my changes in different change lists was the best way to handle it.

I also find git's default of rewriting your worktree when you switch to a different branch extremely annoying compared to simply having each branch be a different directory in the FS. Fortunately, digging around I recently discovered git worktree and I'm much happier on this front at least.

The file locking was always a relatively obscure workflow, so I'm surprised that you even had to see it if you didn't use P4 a lot. I've only seen it in 3 occasions: working with binary files, the error message when I didn't actually have write access, and when someone intentionally locked some files to make sure they don't have any merge conflicts while they finish up a huge commit.


Locking files is critical when you are editing binary data which can't be merged - which in the games industry, is generally how the majority of the dev team works.


I’m not sure locking files is as important as all that. You “check out” files, but nothing prevents anyone else “checking them out” (which is perforce parlance for: “make editable”) - conflicts can be resolved.

There is locking but it’s seldom used- handy in the gaming industry for code which depends on data.


As cecilpl2 commented - it's the typically the binary art assets (occasionally other files) which are unmergeable which need the exclusive lock turned on. And of course you want to avoid branching those too in many cases.


Never used it but I had to use ClearCase at work even though I was already proficient in git.

Ugh. The centralized model is better for companies, but ClearCase really makes its best to make your life miserable:

- You have to think twice before modifying a file, because the steps to be able to modify a file can take from 30 seconds (if you already created the activity) to a few minutes (if you have to create it)

- Activities are supposed to be like branches, summing up all the changes. But there is no way to see all changes in one go. It's click everywhere, waiting for the server to reply on each click.

- Because there is no way to display the branch content in any way other than envisioned by IBM, there is no way to discuss a changeset. No pull requests, no exchange, nothing.

- Horrible UI/UX all around. It's slow, it's unreadable, random bugs happen all the time where the only fix is to restart the service, .... and it's expensive.

I'm not advocating for a system that only works when online (although the fully integrated system of Google does sound good), just that it be architectured around a point of centralization. This is the way I'd like to use git:

- A branch created locally will be synhcronized and visible to everyone by default

- A branch that I manually tag as private won't, but it will still be saved on the server

- A branch that has a conflict between me and someone else will be marked locally in some way (maybe a second branch ?)

- Bonus: my working repo and staging area are also synhcronized to the server


At my current job, I had to create a command-line tool just to be able to checkout things from perforce. It is ridiculous how difficult the UX is for this. And companies are still paying for it!


I really don’t want to be the guy defending perforce as I have gripes with it and prefer git for the reasons I mentioned..

but what was the issue with `p4 edit` that caused you to write a new CLI tool for checking out files?




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: