#source-control

1 messages Β· Page 60 of 1

inland prairie
#

Need help with git

runic bay
#

Hey guys I've been using AWS and Perforce for the longest for my source control and data base management needs. But recently I've been developing with the Hololens 2 and I have been starting to learn Azure. I want to ask if it was possible to run Perforce off of Azure instead of AWS. I haven't been able to find and link to start my self up.

simple lodge
#

You can

#

Just get an azure linux vm and profit

timid depot
#

Is there anything I can do to make"reconcile offline work" work faster in Perforce?

#

Syncing perforce depot with latest source in github is pain in the ass because of huge wait times while reconciling changed files after git pull.

woven sluice
#

I've never tried it but there is a server setting option you can change to remove one extra check I think... I can't imagine it would speed it up a lot

simple lodge
timid depot
simple lodge
#

If you have a license, ask Sven

timid depot
simple lodge
#

(if anyone knows, he probably does if he still works there)

regal grotto
timid depot
#

Avoiding perforce is not an option, we're using unreal game sync

quaint obsidian
#

PBSync 😩

idle light
#

So me and a friend of mine are working on a project in our spare time, just a hobby with no real budget behind it. Would you guys recommend perforce (with a free aws server), or github if it’s just the two of us?

quaint obsidian
#

Azure DevOps

fierce inlet
#

What is it responsible for?

royal turret
#

would I talk about the UnrealMultiUserServer here?

#

I can't seem to find channel focused on Tools Related to UE4, or the Programs.

So, i'm sorry if this is in the in-correct section.
I'm looking for some help associated too a error in UnrealMultiUserServer I can't seem to find any documentation on any specific commandline args for defining a Repository within the Multi-User Server, anyone have a direction to point me in?

#

I see there is a Repositories.json file, but when I view it. It looks like @^ lol crazy.

#

I made a Forum post on the subject if anyone wants to look at it: https://forums.unrealengine.com/t/running-into-problems-with-unrealmultiuserserver-failed-to-create-session/248096/2
once i figure this out, will gladly share the knowledge on how to fix the issue.

idle light
quaint obsidian
quaint obsidian
simple lodge
jolly fog
#

hey guys, I made a pull request from another team members branch to get the latest changes, project wont open any more can I revert back to my last commit?

idle light
simple lodge
#

its a choice, both have their benefits - in larger teams perforce for sure if you have the $$, but if deffo <5 users then perforce free is pretty decent

idle light
#

Yeah it'll be a two-man project (3 people max but that's a big maybe)

idle light
#

Oh, azure devops is only for git I get it

#

is there a guide anywhere on how to set that up for ue4?

#

Also, are there any apps out there for it like github desktop, or would I need to learn command lines?

simple lodge
#

sourcetree, gitkraken, commandline, tortoisegit, there are literally hundreds of git-guis

royal turret
#

u can deploy on gcp for perforce in about 5mins and have it up/running

frozen geode
#

How can I rename a folder safely in P4 without having to reupload it's content?

#

Just found "Rename/Move" πŸ€¦β€β™‚οΈ

fierce inlet
#

Perforce has lfs space limit?

merry verge
#

What?

fierce inlet
#

For example github has 1GB lfs limit, does perforce have something similar?

merry verge
#

You host perforce yourself, the only limit is the server's resources.

quaint obsidian
#

github has 1gb provided for free, you can pay for as much as you want

#

idk theres any place that gives free perforce servers

regal grotto
#

Also note that there's stuff like Subversion, so the world isn't black and white perforce and git.

simple lodge
#

Perforce just has a user limit and or a storage/bandwidth limit if you are using the cloud hosting

pure oak
#

Hello I’m trying to use GitHub desktop to send a finished project but when I upload it it won’t let me download it on my computer. Could anyone assist?

rotund bobcat
#

what do you mean won't let you download

lucid laurel
#

I switch from visual studio to Rider with a Project that uses Perforce.
I noticed that Rider only seems to track some files and not all of them. Anyone encountered that before and / or knows a solution?

twin gust
#

hey! using git with bitbucket as repo and Fork as the UI client but whenever I try to pull remote changes and have Unreal open I'm getting several "unable to unlink old" errors, i.e. Unreal is locking the files I'm trying to pull changes for - any idea on how to fix this? closing Unreal works but that's obviously not viable..

rotund bobcat
#

well, unfortunately that's pretty much the only way

#

why is it not viable?

#

are yout pulling 40 times per minute?

twin gust
#

not 40 times per minute but somewhat frequently yes, doing lots of exploratory development at this point. reason I'm asking is because we're coming from a Unity perspective and Unity does not have this issue.

rotund bobcat
#

yes, unity is very different

#

there is a git plugin for unreal though

#

idk if that would somehow circumvent the issue

#

I've never used it

quaint obsidian
#

Yeah, the Git plugin for Unreal does unload the content and reload it upon pull, just like all the other source control plugins

#

but it can crash with larger projects, because of its naive approach to reloading the entire project

twin gust
#

all right, sounds like something worth looking into at least, thank you both very much for your input! πŸ™‚

unreal citrus
#

what does this red plus mean in terms of version control?

queen mulch
#

iirc it's that the file is going to be added (exists in your machine but not yet in the remote repo)

#

the tick is that an already existing file has been checked out from your side

#

a lock is that someone else has checked that file out

unreal citrus
#

Thanks that explains a lot, I dont use remote as github only gives you 1gb in term of git lfs space

queen mulch
#

think of it then as "this file doesn't form part of the asset/file registry of this repo/branch/etc yet"

upper current
#

I have an engine fork and have been making some minor changes on my local machine. I wanted to work on my laptop so I got my repo over there as well but there are differences. The repo I just pulled has its latest commit from 2020 while my other version has its latest commit from 2021.
according to git status they are both on the release branch and there are no pending changes. What could cause this difference?

upper current
#

nevermind, git pull from the command line does something else than the gui. how can version control be this pants on head retarded

silent carbon
#

hey guys, I'm having problems setting up unreal engine's github version. When I tried the setup it gave me this error. Does anyone know what's causing this problem?

quaint obsidian
upper current
quaint obsidian
#

ah ok, weird

weak bronze
#

For the UE4GitPlugin is there a way it can push to server as well?

Also is there a way to automatically add only the files actually in use?
When you import packs such as Brushify they can use a lot of space...

slender coyote
#

QQ - Has anyone ever tried to share an art-only version of the project for level designers/artists etc.?

#

Not sure what that workflow would look like, and whether it would even be worth it

cyan jay
#

I don't really see how that would work. UGC workflow is useful if you have Engine source build but you don't want artists etc to sync/build the Engine code themselves.

simple lodge
lime nova
#

hey everyone. i'm wondering if anyone has any good videos or tutorials on managing workflows for marketplace assets? the thing i'm struggling to understand: am i supposed to check in all of my marketplace assets into version control? or just the ones i use? if it's just the ones i use, how do i copy all of the referencing assets over to my game's folder? that way i avoid checking in the marketplace asset folders. thanks

edit: the only workflows that currently make sense to me are to either check in all of the marketplace assets into version control, or use some kind of empty project to test out other marketplace assets and then migrate those over. is this how other teams do it?

granite quest
simple lodge
#

test project + migrate or version everything in main project

edgy drum
#

Hello guys, I have big issue with SourceTree, I dont understand but I don't see my files on Unreal, but on my Windows files I have all folders, same on Sourcetree.

#

I used git on sourcetree

#

I past 1 week to found my problem, but I did not find a solution that corresponded

#

Thank you all

warped perch
#

How do you branch for blueprints in Perforce? I'm coming from github background and I have no Idea how to make a branch in perforce

#

Any suggestions or tutorials?

cyan jay
#

Branching + Unreal are not really compatible due to the binary assets are not really mergable.
I'd strongly recommend sticking to Trunk based development.

ornate willow
quaint obsidian
# ornate willow is there any extra setup needed for this or just plug and play? I assume we sti...

is there any extra setup needed for this or just plug and play?
plug and play, but it makes some assumptions about your repo configuration, like umaps and uassets are lockable, git+lfs are the latest version, and you have no submodules (though the latter is already assumed in the base plugin).

I assume we still aren't going to be using the sync option inside editor, and will be closing unreal, syncing project, reopening?
no, it's fixed in the fork.

When you say crashes on big projects, how big are we talking?
i wouldn't be able to really tell, but it's based on loading every single asset in your project. probably a limit of your RAM. and to clarify, this is fixed in this version. it only reloads what is needed.

is locking working?
yes, it's greatly enhanced.

ornate willow
ornate willow
quaint obsidian
#

just download the repo, and should be source compatible with 4.27

#

@ornate willow

ornate willow
quaint obsidian
#

using github

#

but i used azure for a game jam and did experience that i think, but i think it got fixed when we used a org repo instead of a personal (i think)

solemn lake
#

Do I need to run both Setup.bat & GenerateProjectFiles.bat everytime I upgrade the engine source?

#

I usually don't modify but just use the source. And I use git pull etc to get the latest version but I am not sure if I really need to run those .bat.

warped perch
#

and my main branch would be the lowest supported version for obvious reasons.

solemn lake
quaint obsidian
jolly fog
#

Anyone tried source control on hetzner server?

warped perch
neat grotto
#

I'm in a Perforce-flavored pickle. I'm running a server on Ubuntu and I ran some routine updates. There was an update for helix-p4dctl that broke it. The update can't finish installing and the service will no longer start.

#

Running p4dctl start master returns this:

p4dctl error:
        'master' p4d: '/opt/perforce/sbin/p4d' exited with status 255.
Started 0 services.
p4dctl error:
        Not all services started successfully.
merry verge
#

You need to probably update the p4 database

#

Easy way to tell - su - <perforce Linux user> -s/bin/bash
cd to the server directory, probably something like /opt/perforce/servers/master
Run /opt/perforce/sbin/p4d

#

If you need a database upgrade it'll tell you exactly what to do

neat grotto
#

OK. Is this also related to why the p4dctl update won't complete?

merry verge
#

Probably

neat grotto
#

Interesting. I would have never guessed.

#

I'll try running p4d manually and see if it says something about a db upgrade.

#

Nothing unusual. It just says:

Perforce db files in '.' will be created if missing...
Perforce Server starting...

Which if I recall is normal when running p4d.

merry verge
#

Hmm... Yeah that's a normal startup. Try starting it under p4ctl again?

#

Might need to find the log files if it still doesn't launch under p4ctl

neat grotto
#

Same error. exited with status 255.

#

Where can I find readable Perforce logs? I only see .csv files in the logs folder.

merry verge
#

Try looking through /var/log

neat grotto
#

Hm, nothing related to p4dctl or Perforce at all.

#

I'm not sure where to look otherwise.

merry verge
#

Damn. That's all I've got then. It's super weird that running p4d manually works fine...

neat grotto
#

Yeah. It's definitely something wrong with the p4dctl service. I just can't figure out what.

#

Any time I run apt-get upgrade it gets stuck trying to finish installing the p4dctl update and fails.

#

I checked the p4dctl config files and they seem fine.

#

They match the configs on another server I have where everything is working smoothly.

#

I'm guessing it must be the actual service running p4dctl, not something with Perforce itself.

#

But my client can't continue their work until I solve this. 😞

merry verge
#

Could try running a database upgrade even though it doesn't seem to want one. From the docs - p4dctl exec -t p4d <service name> –- -xu

neat grotto
#

So uh...

#

Apparently the superuser account I used to manage the server β€” the one that was created when I install Perforce β€” has been deleted.

#

That would certainly explain why p4dctl doesn't work, because it's configuration has P4USER set to that user.

#

Well scratch that. Updating the config with another superuser who still exists does not fix the problem.

simple lodge
#

Thats quite a pickle you got yourself in there

neat grotto
#

Yes...

simple lodge
#

what is in the service file?

neat grotto
#

It's the same as the one on another server I have that's working fine. πŸ€”

simple lodge
#

Did you try disabling and re-enabling it?

#

with your updated user info

neat grotto
#

Yes. Same error. Exits with status 255.

#

And the startup service refuses to run.

simple lodge
#

thats a permission error IIRC

#

does your user have Sudo/root perms

neat grotto
#

The perforce Linux user? No.

simple lodge
#

nah p4dctl user

neat grotto
#

That's the user that owns p4dctl.

simple lodge
#

what the fix is for you, I have no clue

neat grotto
#

Yeah, I saw that note. I've checked privileges, ownership, and config. They're all normal. 😦

#

All 3 are identical to a second server that works.

simple lodge
#

did you check user:group folder permissions?

neat grotto
#

Hm, no but I'm not sure why a package update would have modified that.

simple lodge
#

I have no idea, ive been out of p4 land for a while

neat grotto
#

It's a dangerous land. You're better off. lol

#

This break happened when I tried installing an update for helix-p4dctl.

#

apt-get can't finish installing the package. Always errors out.

simple lodge
#

well there is your first mistake

#

Installing updates πŸ˜„

neat grotto
#

lol

#

First time in many years it's caused an issue.

#

I wish I didn't.

simple lodge
#

revert the upgrade with apt/dpkg?

neat grotto
#

Can I still do that if the upgrade never finished?

simple lodge
#

To a point, did you try a --fix-missing?

neat grotto
#

Oh, not yet.

#

One sec, trying that quick.

simple lodge
#

You can revert it using the history.log too

#

that said, snapshot before updating is always a wise idea

neat grotto
#

I am probably not the wisest Linux user. lol

#

I do have automatic backups for my droplets though (using DigitalOcean).

#

Trying to avoid reverting to a backup here if I don't have to because my client will lose a lot of work.

#

But it's a fallback if I need it.

simple lodge
#

Its fixable without that, but its a matter of time

neat grotto
#

How can I use history.log to revert helix-p4dctl? I've never done that before.

#

I'm reading the file now and I see a list of apt-get commands that were executed.

#

A lot of them say Error: Sub-process /usr/bin/dpkg returned an error code (1).

simple lodge
#

ok dpkg error is a start

#

Run this sudo dpkg --configure -a

neat grotto
#

OK. Running that spit out the helix-p4dctl installation errors.

simple lodge
#

that should get you going?

neat grotto
#

I've already seen it, and unless I'm missing something, it's just telling me the init.d script failed to start because p4dctl failed to connect to the server. That's why I went about investigating the p4dctl config, which seems to be fine...

simple lodge
#

Ooh I wonder, Did the certificate change

#

causing the connection to be invalidated

#

(I think p4 call it fingerprint trust)

neat grotto
#

Jesus I hope not. Perforce is so bad about SSL cert expiration. In P4V it says "Certificate date range invalid".

#

That happened to me once, and renewing the cert was such a pain that I wrote a blog post about it to save others from that. lmao

simple lodge
#

Have a look at connecting via p4v manually if it pops up finger print error

#

if it does then you can do something like p4dctl trust <<key>> itc

neat grotto
#

P4V won't get anywhere because the Perforce server isn't running.

simple lodge
#

manual start?

neat grotto
#

I could manually start p4d and try that, I guess.

simple lodge
#

p4dctl didnt really exist when I was last in perforce land, (we wrote our own init scripts), but cert errors would explain that behavior

#

and upgrades can invalidate the fingerprint

#

meaning you need to p4 trust before your host can connect to the p4 server

neat grotto
#

OK I manually started the server, and I see a new error I've never seen:

Remove SSL protocol prefix from P4PORT or fix the TLS settings.
#

I have no idea what that means.

simple lodge
#

connect to server over non ssl (remove the ssl from ssl:ip:port)

neat grotto
#

I didn't even think that would be allowed. Huh.

simple lodge
#

ye you can connect in cleartext

#

then youll have to poke arouind in the TLS/cert settings

#

because something is probably expired/incorrect

neat grotto
#

It says "no such user" no matter which username I try to connect with. 😰

simple lodge
#

Hmm, you dun fooked it

#

I have no idea, thats a new one on me 😦

neat grotto
#

Same.

simple lodge
#

Sounds like you broke the userdb

neat grotto
#

I'm not even sure how.

simple lodge
#

Do you have paid support?

neat grotto
#

No.

#

I'm not sure how I went from a broken helix-p4dctl update to a broke user db, but wow.

simple lodge
#

I dont remember the commands to look at users on the server honestly

#

its been too long

neat grotto
#

I can't do much since p4 doesn't work.

#

Oh, I could manually start the server then p4.

simple lodge
#

ye

#

p4 & in one window

#

then run stuff against it

#

These kinda problems are ones that can take hours to debug

neat grotto
#

I know, and that's what I'm afraid of.

simple lodge
#

You can almost always fix it

neat grotto
#

OK, I don't know how to run commands with the perforce user while p4d is running.

#

I tried a separate terminal but that didn't work.

simple lodge
#

did you sudo su <perforceuser>before?

#

or you can just call path to p4 directly

neat grotto
#

I did, but running p4d takes over the terminal and requires Ctrl+C to stop it.

#

I need another process to do stuff at the same time.

simple lodge
#

ye you should be able to do sudo su in a diff terminal

#

or run it in a screen

neat grotto
#

I tried switching to the perforce user in a different terminal, and when I do p4 gives me the "Connect to server failed: check $P4PORT" error.

simple lodge
#

do a p4set first?

neat grotto
#

Ah yeah, that did it.

#

P4PORT was perforce:1666. I set it to localhost:1666 and now p4 commands are working.

simple lodge
#

Enjoy

neat grotto
#

Now to see if my users have been obliterated.

simple lodge
#

Im off for food, let me know how it goes

#

I hope it helped

neat grotto
#

Enjoy! Thanks for troubleshooting with me. Always helps to talk to someone else.

#

I'll let you know how it goes.

neat grotto
#

When I run p4 info it says my server root is ., which is definitely wrong. It should be /opt/perforce/servers/master/root.

#

I tried updating it with p4 set P4ROOT but that doesn't have an affect. p4 info still reports the root as .

woven sluice
#

How did you start it manually? (How did you invoke p4d) ? You can set all of the startup options with flags, i.e. Set the root to your actual root and also run it as a daemon so you don't need two terminals

neat grotto
woven sluice
#

I actually don't use p4dctl at all. Lol. I'm dumb for that though πŸ˜„

neat grotto
#

πŸ˜„

woven sluice
#

Been manually running it for like ten years now ... Only need to reboot my server once or twice a year though

neat grotto
#

I've been using p4dctl for the last few years. It's handy. When you set up a new Perforce server these days, it automatically creates a startup script and all that.

#

I meant to say service, not script. It creates a service for running p4d. p4dctl is a utility for starting, stopping, and checking the status of the service.

woven sluice
#

I mean if I was in your position I would probably 1) backup the actual server 2) uninstall p4d and friends and reinstall

neat grotto
#

I have automatic backups configured for the server (I'm on DigitalOcean).

#

The last one was generated on Saturday, so I'm going to revert to that if I can't solve it myself very soon.

#

I was saving it for a last resort so my clients don't lose any work.

#

But at this rate, it's looking like the most practical solution.

woven sluice
#

I don't understand, I thought your problem was with the programs not your server

#

Or are you still unsure if your server is borked

neat grotto
#

By server I meant the actual server, not the Perforce server.

#

My problems are many: a helix-p4dctl update broke it so the service can't run anymore. Running p4d manually, I discovered the user db might be broken (somehow) because it says there are no users.

#

It's been a daisy chain of problems, and I don't know how it got this bad.

#

Probably the worst Perforce trouble I've had in years.

woven sluice
#

You're sure you started your server manually properly?

#

It sounds like you didn't start your server but made a new one

#

Just from some of what you wrote earlier

neat grotto
#

I guess I'm not sure. I just ran /opt/perforce/sbin/p4d in the server directory. No flags.

woven sluice
#

I'll get you a proper example

neat grotto
#

OK.

woven sluice
#

./p4d -d -In p4master -p 1944 -r /opt/perforce/servers/p4master -J /srv/sysdisk02/journal

neat grotto
woven sluice
#

If running manually it'll be important to set the real root and any journal setting you normally had, if you did. Environment variables are supposed to work but ... When in doubt feed them right in like this

#

If you can run it manually and determine it's working fine then I would try to backup p4 server root and reinstall the programs before bombing it back into a history snapshot

neat grotto
#

OK. My journal is in the server directory. Do I still need to feed that path in with the -J argument?

woven sluice
#

I think that's the default so probably not

neat grotto
#

OK.

#

Now that you mention it: the first time I manually ran p4d today, it said:

Perforce db files in '.' will be created if missing...
Perforce Server starting...
#

Subsequent runs only say:

Perforce Server starting...
#

I'm guessing that's another indication that I may have created a new server.

#

Still doesn't explain why my p4dctl broke, because that happened before I ran p4d manually. But at least this is something.

#

Interesting. I ran p4d with the arguments you mentioned. When I run it in servers/master it works, and that does appear to be a new server I accidentally created β€” although most of the db files say July 2020 when I do ls -l, so that's odd. BUT when I run p4d with those arguments in servers/master/root which is where my server actually is, nothing happens.

#

Or at least nothing is returned. It doesn't say Perforce starting... in that case.

#

And p4 commands don't work afterwards, so I presume that means it didn't start the server.

woven sluice
#

that's a bit scary :\

neat grotto
#

So is this: if I run sudo apt-get upgrade I see this:

The following packages were automatically installed and are no longer required:
  helix-cli helix-cli-base helix-p4d-base helix-p4d-base-20.2 net-tools
Use 'sudo apt autoremove' to remove them.
#

Why would apt think all the Perforce packages are no longer required? 😰

merry verge
#

They might have different packages they were superceded by. Do a search for other helix packages.

#

I wouldn't actually uninstall until you confirm though

neat grotto
#

That's true.

#

At this point I just need to figure out how to run my Perforce server so I can check when the last commit was made.

#

So I know how much progress we lose if I restore the VPS from backup.

woven sluice
#

dumb question but did you actually try connecting to the server (p4v) after starting it before?

neat grotto
#

Yes.

#

That's where I found out it had no users.

woven sluice
#

i mean like 45 minutes ago

neat grotto
#

Yes. No change.

#

Definitely seems you were right that I accidentally created another server.

#

Right now I'm trying to figure out why the original server won't start.

woven sluice
#

alrighty. was just checking because it might not produce any output (i.e. "perforce starting") when run properly in daemon mode, and p4 commands might not be working unless you're manually specifying p4 user and pass in them too (I never rely on the env variables when debugging)

neat grotto
#

Right.

#

The amount of times I've had to set P4PORT, P4USER, etc. manually over the years is too damn high. lol

#

Trying to login with P4V after that silent run returned this:

Connect to server failed; check $P4PORT.
connect: [redacted]:1666: WSAECONNREFUSED, No connection could be made because the target machine actively refused it. 
#

Indicating to me that the server was not running.

woven sluice
#

you might have done this by now but you could also omit the -d command and let it take over the terminal as per your original test, maybe it'll spit out some output that way. grabbing at straws of course by now πŸ™ƒ

#

only critical flags should just be the root and port (and journal but omit for default)

neat grotto
#

Still nothing. 😦

#

There aren't a lot of straws left to grasp at. I've never seen a Perforce server just not run before.

#

In my experience, if you run p4d in a folder that doesn't already have a server, it creates a new one (as we discussed earlier).

#

So I don't know what zero output means. Been looking through the docs for guidance, but no luck yet.

neat grotto
#

I found the log. I was looking at it the whole time but didn't realize there was more to see because scrolling with the mouse wheel is decoupled from scrolling with the down arrow.

#

@merry verge You were right all along: helix-p4dctl and p4d were updated so the db needed to be upgraded. I could've sworn I did that when you told me, but I just tried it again and now the service started. I'm back up and running. I could cry. lol

merry verge
#

Ugh I feel you man haha. I've run into some weird issues like that before... Glad it's solved now.

neat grotto
#

I only tried again because I finally found the end of the log file and there were dozens of lines complaining about upgrading the db to "level 39". I wish that would've output to the command line, too.

#

Yeah. At this point I'm just glad it's solved so my client and I can both get back to work. πŸ˜„

#

Not the first time I've spent hours troubleshooting Perforce only to find the solution was simple (but not clear).

merry verge
#

Yeeeep. I wish there were cheaper managed hosting options than assembla... Would help avoid this shit. But oh well...

neat grotto
#

Side note: I just learned about operator users and how they conveniently allow sys admin tasks without taking up a seat, but apparently they can't use P4Admin. Welp... lol

#

I guess it's really just a user for p4 tasks.

#

Oh well. Still a convenient feature that will make my life a little easier.

#

Well, maybe a little easier. It honestly can't do much that's useful. I can't even see what users exist or what the latest changelist is.

silent carbon
#

Hey guys, how would you fix this issue when let's say you're trying build unreal engine from source and you're using p4v. The .sln has been built successfully but whenever I try to load the project it's still telling me to try rebuilding from the source manually

cursive badger
#

hi has anybody encountered this before when trying to pull containers --

sudo docker pull ghcr.io/epicgames/unreal-engine:dev-4.27
Error response from daemon: manifest unknown

...i have already successfully linked my github and epic accounts, and gotten a personal access token to login with, still can't seem to get the images though...

rich steppe
#

Anyone ever encountered perforce syncing at like 1mbps?

#

Server is on DigitalOcean in London, I'm in US, I'm getting like 1mbps, ppl in europe are getting like 400

#

my ping is 70 to server

simple lodge
simple lodge
verbal terrace
#

Where do you host your unreal project remotes?

#

since both Github and Gitlab have limited LFS storage, i dont see any obvious solution here

rotund bobcat
#

limited if you want free yes

#

I think going the free route and using git Azure is probably your best bet

verbal terrace
#

what does it do better?

rotund bobcat
#

It's free up to 5 users, I don't think they have a storage limit

verbal terrace
#

ah nice

#

well damn, my project is 11Gb while the git folder is an extra 11GB

rotund bobcat
#

11gb is a lot if you properly use lfs

shut dragon
#

A quick noobie question about Perforce:

I was working on a nice little class today, saved it but didn't submit changes.
I then rolled back to a previous version but changed my mind. Any way to go back to the future and get the pre-rollback version?

Thanks for your time

fiery abyss
warped perch
#

but if it was a blueprint, UE4 makes backup of your assets from time to time

shut dragon
#

It was indeed a blueprint. I forgot about backups. thanks a bunch

warped perch
#

it's located under Saved folder, hopefully you can find a good backup.

verbal terrace
#

Is there a service for free SVN hosting as well?

#

i kinda liked that when i used it at a studio

quaint obsidian
jagged spear
#

Hi, my Unreal project has about 30GB of content, however its full project size is ballooning increasingly over time to now 166GB. Normally I haven't seen a project file balloon this way. However, this is my first time using Git LFS collaborating with a small team. Previously I've used Perforce for larger Unreal projects. Not sure if that's a contributing factor, but that's the only difference I can think of. Any suggestions for managing this? Thanks!

storm vortex
#

Is there any way to diff a level?

#

A bug was introduced months ago in one of my levels but I have no idea what I changed to cause the bug

#

because I can't diff it to see what I changed

simple lodge
#

perforce only keeps files on server, with git you have a copy of the whole repo history by default, so it taking more space is expected

jagged spear
#

oh god, that is what I was afraid of

#

I'm not familiar with that method. Is that something I could tell my team to easily do through the default GitHub desktop app? I'm dealing mainly with artists who only know the basics.

regal grotto
simple lodge
simple lodge
jagged spear
warped perch
#

Anyone knows how to convert classic depot into stream depot?

#

but i get this error for first command I enter p4 -u <User> init -p <OriginalServerPort>

Matching server configuration from '....:port':
case-sensitive (-C0), unicode (-xi)

p4d server failed to initialize.  A 2015.1 or later p4d server
must be in your path and runable.
Execution Failed: p4d.exe -r d:\Perforce\Server\.p4root -xn -u kazem -C0 -q -Joff: The system cannot find the file specified.
#

I have the latest version of P4V installed. actually I had to remove all perforce apps including Helix Versioning system. then installed P4V so in order to enable DVCS.

#

I checked and I do have p4d.exe inside ProgramFiles/Perforce/DVCS/p4d.exe

#

Should I add something to my environment variables?

quaint obsidian
#

Partial clones and shallow clones like mentioned before are not at all a solution with LFS

#

With LFS, history is actually quite small

#

If you are on Mac, you can run git-lfs dedup to reduce the file duplication

#

(or Windows with ReFS, Linux with a CoW filesystem like btrfs)

#

There is also working on going to reduce the necessity for a full working tree cache of all objects, but as it stands, Git LFS checks out the full working tree upon pull, rather than updating changed files. This causes uncached files (but already downloaded to working tree) files to redownload into the LFS objects folder

warped perch
jagged spear
simple lodge
quaint obsidian
#

no, not at all

#

LFS does not fetch objects unless they're referenced, unless you specifically use git lfs fetch --recent

#

and that only does reachable objects within the last 7 days by default

#

LFS pointers, which get stored in git, are <2KB files, which get changed minimally when an LFS object changes

#

shallow clones will only help to reduce the usage of this part, which is negligible compared to most config & source files in your repo

#

and certainly negligible compared to LFS objects, which are many megabytes large in UE4 projects

jagged spear
#

Thanks, this is very helpful. However, I am baffled why the default behavior is to store the entire repo history locally? I get that the repo itself is storing all of that data, but it just didn't occur to me that it would store all of it locally as well. If I'm going backwards in my commit history I'm still accessing the remote repo and not looking at my local files.

long hull
regal grotto
regal grotto
jagged spear
#

Thanks everyone - was super easy to fix with pruning. And now I see how I can completely remove the .git/lfs folder if desired (although I won't currently).

In terms of local data, I might also misunderstand and it might be working off my local data more than I realize.

simple lodge
# quaint obsidian no, not at all

for some of the repos I have we have a fair few files that arent LFS so shallow cloning drops about 1gb off the repo size
also lfs.pruneoffsetdays is useful

long hull
quaint obsidian
#

it doesn't work very well last time i tried

#

because checkout will redownload all objects missing

#

instead of new objects required to replace pointer files

quaint obsidian
simple lodge
#

And shallow clones are fine, you just need to understand the limitations

quaint obsidian
#

shallow clones don't support many modern git features due to the lack of history

#

those features can speed up large repos

simple lodge
#

depends what you are doing with the repo

#

I mostly use shallow clones for Build infra

quaint obsidian
#

is this build infra permanent or provisioned in a VM per build?

simple lodge
#

Mix πŸ™‚

quaint obsidian
#

if it's the former, shallow clones are much slower than pulling, and they do slow down pulls even if you do pull after that

simple lodge
#

pulls take around 15 sec at worst πŸ™‚ - as i said its workable, you just need to know the caveats and how to set it up

#

But yes, its a fair point about it not applying to LFS

quaint obsidian
quaint obsidian
#

for our repo, we do an initial shallow clone for all machines, and do a background unshallow

jagged spear
quaint obsidian
#

But to be fair, most of people are saying the truth, but only a truth of Git from very long ago. LFS has improved and become front and center, Git has become much faster for large repos thanks to Microsoft and Google, and the UE4 experience has gotten better.

jagged spear
#

I see, that does make sense! A lot of search results on the topic can end up being older as well.

neat grotto
#

Meanwhile, Perforce, while generally good at what it does, has serious design flaws; such as allowing a super user to remove their own permissions.

#

Powerful when it works; a nightmare when it doesn't.

quaint obsidian
#

Yeah, I haven't used Perforce myself, but I've looked at a lot about it. It's kinda worrying to me that they're owned by an investment company, with much of their talent leaving in the acquisition in 2016. And that, combined with the only new feature since then being streams, something that I've seen a lot of unhappiness with, to the point that even Epic and others have made a completely new version of it in UGS, makes me happy not to use Perforce. I also think that while the server centric model is cool and powerful, it has a lot of pitfalls especially with remote work where the server latency becomes a critical problem.

merry verge
#

I'm a bit confused by "Epic and others have made a completely new version of it in UGS"... my understanding is they leverage streams if you have them. They didn't reimplement perforce's branching.

#

in fact I'm pretty sure UGS is stream-agnostic - it doesn't care if you use them or not. It's just part of the branch path as far as it knows.

neat grotto
#

I thought UGS was just a custom client for wrangling Perforce projects.

merry verge
#

it is, sort of

quaint obsidian
#

As far as I understood from the talks, the filter categories they have was using custom logic

merry verge
#

I believe that's more about categorizing what good builds are for different groups of people

#

nothing to do with branching

quaint obsidian
neat grotto
#

I'm still very curious to learn more about the virtual asset system coming in UE5, and what that means for version control.

quaint obsidian
#

Here they say they were unhappy with streams.

merry verge
#

they seem to be unhappy specifically with virtual streams

#

which is one specific feature

quaint obsidian
#

Ok, thank you

#

But still, I see a lot of complaints about don't use this or that feature in Perforce, it's garbage

#

I just gave an example which I didn't use the exact terminology for, but the point still stands imo

merry verge
#

I've almost never seen that. There are a lot of features, and not everyone needs them because they were designed with specific workflows in mind. If you don't use those features, it isn't like they get in your way - you just don't use them.

quaint obsidian
neat grotto
#

It's not in Early Access as far as I know.

#

I use launcher builds so if it's on main, I'm out of the loop.

quaint obsidian
#

I'm sure it's worked for you

merry verge
#

I'm curious to know what those are, because the virtual stream bit wasn't really a perforce feature being garbage but that virtual streams weren't really made for the workflow they had.

quaint obsidian
#

Yes, but shouldn't software for a given purpose accomodate those workflows?

merry verge
#

But it does... they didn't completely sidestep perforce, they just avoided one feature.

quaint obsidian
#

And I could go on at length about other features, but I just don't care enough to entertain the questions from you

quaint obsidian
#

And with that, I'm going to bounce from this convo, because I don't have interest in convincing siliex#1214 of anything

#

I merely was dropping a tangential rant :)

merry verge
#

Fair enough, it just seems unfair to say "perforce has garbage features" and then not expand on it. I get you personally don't like perforce for whatever reasons, and I won't try to convince you otherwise either.

quaint obsidian
#

Cheers!

quaint obsidian
neat grotto
#

Cool, thanks!

#

Ohhh it's even got a detailed commit message.

quaint obsidian
#

essentially, just asks the remote, spit out contents of this file, and then writes that

neat grotto
#

Interesting. Looks like the system might be called Mirage.

#

Cool (and fitting) name for such a feature.

quaint obsidian
#

yeah, can't wait to see how it works in total, and implement it in Git :)

#

it all really depends on how they plan to describe the virtualized assets

neat grotto
#

Yeah. I noticed it says only implemented in Perforce "at the moment", so they might have plans to do more.

regal grotto
simple lodge
#

The biggest issue with git is mostly just teaching artists who are used to the perforce way of working

neat grotto
#

Free for 5 users, but when you want to add #6, everyone becomes a paid seat and they only have annual plans. So you go from free to over $3,000 a year.

regal grotto
#

"free for 5" is just a demoversion

simple lodge
#

Perforce has its issues (price, p4v is just pretty garbage, and the way some of their staff act), but it does handle huge repos a bit better than git

neat grotto
#

Sure. Both have their issues. When Perforce is working, it does the job very well.

regal grotto
simple lodge
#

Even with huge repos

#

But we also basiclaly never used work offline for perforce

regal grotto
simple lodge
#

I am a huge proponent of git and use it for pretty much all the stuff I work on now, but I do recognise p4 does have some things that do make it work well for some cases

rotund bobcat
#

git is bae until you have artists that don't get git

simple lodge
#

they need to git gud at git

#

or git git

verbal terrace
#

i cant upload my unreal project to Azure

#

but could push a smaller test repo with only a text file

rotund bobcat
#

well you're not showing full log

verbal terrace
verbal terrace
#

any ideas?

rotund bobcat
#

logs don't say much here πŸ€”

#

still the same if you keep trying?

#

my guess would be you hit some sort of limit

#

but idk

verbal terrace
#

i've tried it a couple of times now

#

there is a 5GB limit for pushes, but apparently it doesnt apply to LFS objects

#

and i added .uasset files to LFS, as it says in my gitattributes
.uasset filter=lfs diff=lfs merge=lfs -text

#

oh okay the regular "objects" dir is still 10GB

verbal terrace
#

I'm wondering at what point its easier to just set up my own server to host this stuff lol

ornate willow
#

Both of those I needed to do to get azure to work. I need to run the git config on every repo I create

verbal terrace
#

but i had it working on another test repo i created today

ornate willow
#

Yeah same here. Then you try to push something close to 2GB and it doesn’t work

#

Sometimes it was working, sometimes it didn’t. Those were the steps I took after hours and hours of troubleshooting, and that’s currently how azure is working for us

#

Also make sure your gitattributes are pushed to your repo first

royal turret
#

Anyone run into this error utilizing the MultiUser Server

SourceControl: Error: CommandMessage Command: UpdateStatus, Error: E:/UE_4.27/Engine/Content/... - file(s) not in client view.
SourceControl: Error: CommandMessage Command: UpdateStatus, Error: E:/UE_4.27/Engine/Plugins/2D/Paper2D/Content/... - file(s) not in client view.
SourceControl: Error: CommandMessage Command: UpdateStatus, Error: E:/UE_4.27/Engine/Plugins/Enterprise/DatasmithContent/Content/... - file(s) not in client view.
SourceControl: Error: CommandMessage Command: UpdateStatus, Error: E:/UE_4.27/Engine/Plugins/FX/Niagara/Content/... - file(s) not in client view.
SourceControl: Error: CommandMessage Command: UpdateStatus, Error: E:/UE_4.27/Engine/Plugins/Editor/SpeedTreeImporter/Content/... - file(s) not in client view.
SourceControl: Error: CommandMessage Command: UpdateStatus, Error: E:/UE_4.27/Engine/Plugins/Editor/GeometryMode/Content/... - file(s) not in client view.
quaint obsidian
#

@verbal terrace I've had issues with personal repos that were not present on organization repos. Maybe you could try an organization repo instead of a personal one?

verbal terrace
#

i think it is an organization repo, the organization is just called "Thane5" because i didnt find a way to make a personal one when i made it

hot moat
#

Is anyone here a Plastic SCM whiz? I've checked out a bunch of files and I want to revert/checkin all the ones that are identical to the server. How would I do this?

#

Nevermind, found it!

verbal terrace
#

@ornate willow i think the git config http.version HTTP/1.1 did the trick

iron star
#

Hey Guys, this question may be quite stupid, but im new to Perforce, so yesterday i set up a Helix Perforce server and made a WorkSpace, me and my friend are both connected, i tried cloning the workspace onto his device and stuff like that, but my question is, how to work together in one WorkSpace, since i saw a Perforce forum saying: Working together in 1 WorkSpace is ACTIVLY DISCOURAGED, but how am i supposed to work on the same files as my buddy then? Greetings Eagle.

cyan jay
regal grotto
simple lodge
#

That is a classic

quaint obsidian
hot moat
iron star
regal grotto
sullen roost
#

Would anyone be able to help me out with GitHub for team collaboration within unreal engine? If you could help please dm me.

ornate willow
regal grotto
#
  1. That thing won't show any files as modified.
  2. You need to be very explicit about your will to create an empty commit
merry verge
#

and perforce has an option to not submit unchanged files. Why it's not the default idk, probably for backwards compatibility (makes sense for p4, doesn't really make sense for P4V)

#

as for why you'd ever want to submit unchanged files... to test triggers or CI I guess? definitely an odd default though.

woven sluice
#

shhh siliex, don't disrupt the perforce haters in their natural habitat

regal grotto
woven sluice
#

I am in simple agreement with what siliex said (and why yes, I do have several dozen iterations of unchanged file submissions to test my CI triggers peepoHat )

merry verge
#

I believe my statement comes down to: It is in fact useful to have the ability to submit unchanged files, especially to test CI (and both perforce and git let you do this). That perforce defaults to allowing you to do so rather than it being opt-in like git is is odd but meh.

merry verge
#

The point is to test CI triggers (or triggers for other systems), not just the CI itself.

woven sluice
#

enough experience will simply reveal that: git has things that suck about it, and perforce has things that suck about it, and jenkins has things that suck about it, and last but not least, teamcity has things that suck about it. Kek ... endmylife

merry verge
#

which makes the real solution to use a barbaric amalgamation of every VCS in existence. Store your git repos in an SVN repo in a perforce depot. And have jenkins trigger on git changes but teamcity trigger on perforce changes.

merry verge
#

you zip up the perforce server directory and store that on dropbox, every time someone needs to work on the project they start up their own perforce server instance.

quaint obsidian
#

and is maintained by the developers of that software, rather than depending on an investment company to slowly update the software while they rake in shittons of money mostly dependent on legacy usage

merry verge
#

You seem to be under the impression that I don't like git - that's not true. I do, but I also think that perforce is better suited for large-scale game development. I use both regularly for my job, and I'd never want to use perforce for pure code projects (services, tools, etc) but I also wouldn't want to use git for projects that are primarily content based (AAA games).

quaint obsidian
#

I think the aversion to using Git in content based projects is based on a lack of third party tooling similar to Perforce's ecosystem, or a lack of understanding

merry verge
#

Both are certainly part of it

#

I wouldn't say that's all of it though

quaint obsidian
#

I'm simply saying that Git is totally viable for what you claim Perforce is better at, and is architectured better. It's simply just legacy investment into Perforce which drives it's usage (from what I see)

merry verge
#

I do think git has gotten better at this stuff in recent years, but LFS locks are a dealbreaker in my mind. They still lock across all branches, right?

#

That makes branches completely useless - need to make a content update on a release branch that'll never be merged back to main? Too bad, someone in main has the lock despite it being completely unrelated.

quaint obsidian
#

Yes, they do

merry verge
#

Fix that and I'd say git is much closer to usable for AAA (tooling requirements aside). The other bit I'd need to see is whether VFS for git plays nice with LFS and locking.

quaint obsidian
#

VFS for Git isn't needed anymore

#

but it doesn't work with LFS

merry verge
#

What do you mean it isn't needed anymore?

quaint obsidian
#

LFS already has pointer files which can be used for selective update/fetch

Partial clone/sparse checkout can be used to exclude entire trees from fetch/checkout

merry verge
#

That's good and gets closer, but just selecting which trees you want to download isn't good enough for where I work. Our entire depot is ~6TB for a full checkout, and it's impossible to choose exactly which trees you'll need.
To be perfectly fair, perforce doesn't solve this either and we have a custom filesystem driver to handle this stuff...

quaint obsidian
#

What's the part that isn't good enough?

#

On use fetch?

merry verge
#

Yeah.

quaint obsidian
#

If that's what you need, you can exclude all LFS fetch by default, and then make a filesystem driver to selectively pull files on request

merry verge
#

Well, that's basically what VFS did.

quaint obsidian
#

Yeah

#

But you'd need a new custom filesystem driver to get it working with the LFS fetch workflow

merry verge
#

Yep. Honestly this sort of workflow needs a bunch of custom tooling regardless of VCS.

#

VFS got close but didn't have the locking aspect.

quaint obsidian
#

Yeah, and that's IMO, the problem

#

people invest a ton into Perforce, and don't notice it a lot of the time

#

which is what I was trying to say earlier, there's a lot of sunk cost with UGS, and such

#

because of things that should be in VCS

#

and that causes lock-in

#

Git is perfectly functional IMO, if they invested that same effort into it instead of Perforce

#

and the added benefit is that it's open source, so you get multiplicative benefits from other studios using it

merry verge
#

I agree, if you were starting completely from scratch. The sunk cost bit is the problem and not something that'll change easily.

#

I do think perforce workflow is better (though maybe not to the point where it's a huge deal) for artist-focused scenarios - and git being much more confusing at the start doesn't help either. That's a problem of getting people to learn, but it is still a higher barrier to entry that large studios don't want to (or don't have time to) pay. Most git tools being programmer focused doesn't help either.

quaint obsidian
quaint obsidian
# merry verge I do think perforce workflow *is* better (though maybe not to the point where it...

imo, I don't think the Perforce workflow is better. It's very remote focused, so very dependent on server verification and an internet connection. Works well at studios with a LAN server, but you can experience dropouts otherwise. Very disruptive. Then, there's the whole issue of shelving changelists, it's IMO very disruptive in Perforce to do local changes and switch out different things you're working on.

As for Git, I think all of those workflow internals that people find confusing aren't really relevant to the user. They wouldn't be with the right investment into tooling, like in source control plugins, external clients, etc.

#

The per file versioning also has a lot of bad implications for some workflows

#

also, imo, absolute workspace paths can really destroy some flexibility in how people want to set things up on their PC

merry verge
#

Regarding remote stuff - it really depends on where you work. If you're a pure remote team with tools built to support that I agree. I don't work somewhere like that and while we very quickly pivoted to be able to work remotely due to the pandemic, you still need to be connected to VPN almost all the time on a good connection and not due to source control. Also, if you're heavy into LFS locking workflows git doesn't really win out either unless you're purely dealing with code/mergeable files.
Shelves I agree with in some cases, disagree in others. Being able to organize things quickly without having to juggle branches is nice depending on what you're doing - I don't think git is strictly better unless you only work with code.

quaint obsidian
#

Git has stashing, which works, like the rest of the git, with snapshots, rather than file revisions

#

so it's way easier to preserve and manage stashes, IMO

merry verge
#

I'm aware of stashes. My take is more around being able to easily move files around, separate them out, share small chunks of work with others, etc. I know git can do all of that, but I've always found perforce's tools simply easier to use for those purposes, and imo that's a huge deal with large teams.
I should preface everything I've said that this is coming from the point of view of a large team. I don't think I'd recommend most individuals here use perforce unless they already know what they're doing (though part of that is just having to maintain a server themselves... I cringe a bit every time someone recommends running a p4d server to someone with no sysadmin experience). I only use it for personal projects myself because I happen to like the workflow, but I'd probably drop it and move to ADO or selfhosted gitlab if I got to the point where I had to pay for it.

quaint obsidian
#

always found perforce's tools simply easier to use for those purposes

I think that's more of a tooling/investment problem. I know Perforce provides a visual client, and it's decent enough, but in the Git ecosystem, the main project's purpose isn't to provide a GUI. I think with that said, there isn't really a third party client sufficient enough to use for video game workflows. But I see it again, as an investment problem, because a AAA studio could easily make one available to use for all these sorts of fine-grained file management you see with content and such.

merry verge
#

there isn't really a third party client sufficient enough to use for video game workflows.
Absolutely agreed, and if there was one I'd probably have a completely different perspective.

quaint obsidian
#

My main point is that the fact that they're happy to do this for Perforce, but not for Git doesn't come from any architectural superiority on the side of Perforce, but really just sunk cost.

#

Perforce, from my view, comes from a generation of VCS before Git.

merry verge
#

Well, on the tooling side P4V already exists so it's not really the same - perforce provides a better visual client out of the box. As far as in-house tooling goes yes, I agree.

#

But the in-house tooling has to be built either way

quaint obsidian
#

You see this model that Perforce in a lot of VCS from that era

#

Yeah, I understand the part about p4v, but I'm just saying, Git doesn't have that goal to make GUI, so some other vendor has to make it

#

It just so happens that the same vendor produces both for P4

#

I applaud Microsoft for moving away from TFS (which is that same generation of VCS as Perforce) to Git

#

They invested a lot into Git, and everyone was able to benefit

merry verge
#

fyi they moved from Source Depot (which is based on perforce) to git. TFS was never used for the windows depot afaik.

#

Your point remains the same regardless, just nitpicking πŸ˜›

quaint obsidian
#

commit graphs, partial clones, sparse checkout, native file monitoring, etc, etc

#

I thought they did use it for Office?

merry verge
#

Not sure about office. THe main effort to move to git came from windows which was on SD though.

quaint obsidian
#

I think both are on Git now

merry verge
#

Yeah, they both are. I'm not sure what Office was on beforehand.

quaint obsidian
#

But yeah, I expect that ecosystem in Git, through both first party investment and community engagement, to grow to match the demands of any AAA studio

#

just like it has for other software developers

#

but one has to make that leap

#

I would think the Perforce subscription costs would be enough incentive

merry verge
#

I certainly hope that's the case at some point, and I do think it'll get there. I don't like that perforce is the standard for AAA, but I also understand why.

#

I would think the Perforce subscription costs would be enough incentive
Eh. I don't know that it'll make a difference due to that - companies like paying for corporate support.

quaint obsidian
#

and it's like, I see ongoing cost, in both that subscription cost and the development cost to maintain support for tooling and extend it over time

#

but like, I just see a lot of disdain for Git, as if it's just architectured in a way that makes it impossible to be good for content and artists

#

and I see that a lot in the Unreal community, possibly due to the outdated plugin in the engine, the long standing misunderstandings about Git's feature profile due to impressions made in the community years ago

#

of course, that isn't to say there are shortcomings

#

you mentioned multi-branch locking as one

#

and of course, there's a lot of nice things Git could do that Perforce doesn't do out of the box, that could be used to entice a switch

#

for example, a VFS for LFS

#

but, I just think that the major performance and workflow benefits from the decentralized, snapshot based model of Git should make it pretty attractive to devs. Add that with the very large, open ecosystem it has, and I think it has a lot to justify investment in the areas it lacks in.

neat grotto
#

Just want to say it was great reading through the rousing conversation from earlier this evening about Perforce vs. Git. There's a lot of nuance expressed here that doesn't come out often enough. Most conversations I see devolve quickly because of preconceived notions about one or the other, rather than real world experience.

merry verge
#

I'm all for these conversations. I absolutely hate when someone just calls something garbage - there's no nuance or understanding in that, especially when the topic is choice of tools which is incredibly based on preference.

woven sluice
#

except when someone just calls perforce's licensing scheme garbage. no nuance required for that cry_thumbsup

merry verge
#

lol, I can't argue with that

neat grotto
#

Hahah, yeah I have to agree with that.

#

Definitely a major weakness of the Perforce ecosystem.

neat grotto
#

Plenty of times it's also based on what the developer likes, for whatever reason, which is perfectly valid. But the conversation is difficult to have when the people involved don't actually have much experience.

#

I think more people should be open to trying something again when they've been away from it for a few years.

#

More often than not, the problems someone had with either Perforce or Git five years ago are easier to deal with now.

#

A simple example: many people still try to follow Allar's great-but-outdated Perforce tutorial, when it now offers a very simple package-based installation that is almost entirely automated.

#

It is way easier to spin up a Perforce server than it used to be.

#

I often find myself wishing someone could make a GitHub-like platform for Perforce. For me, GitHub is a huge advantage for the Git ecosystem, and why I use it for my solo projects where file locking doesn't matter.

merry verge
#

I mean, there's assembla. Which also costs a stupid amount of money. And from the way they're advertised, I wouldn't be surprised if they have an exclusive contract with perforce to be the only cloud host so I doubt it'll change anytime soon.

neat grotto
#

GitHub makes Git way more accessible to a broad audience. I think it would be very cool if Perforce had something like it. I doubt it will ever happen, given the type of company Perforce is. I mean they made a GitHub-like platform for everything but their own VCS, and I believe Assembla is still the only cloud provider, and it's really not comparable to GitHub imo.

#

They do have an exclusive contract last I looked into it.

#

I used Assembla for a large client project once, and it left me disappointed for the most part.

#

It was for SVN, though, not Perforce.

#

So it was much cheaper. πŸ˜›

hot moat
#

We've been using assembla with perforce for 4 years and it's reliable and pretty damn slow.
I've been trying Plastic this week and it does faster but maybe less full-featured

neat grotto
#

After all these years I still haven't tried Plastic. I've heard interesting things from the few people I know who have.

#

It definitely sounds like a unique take, but appears to have some weird quirks.

merry verge
#

Plastic seems interesting to me... except that I think you can't do sparse/partial checkouts unless you use a gluon workspace. But then you're stuck with gluon and can't use the normal tools.

neat grotto
#

Yeah it's weird that they have that separation.

#

Gluon seems like a neat client for artists. Perforce actually made something similar recently.

merry verge
#

did they?

neat grotto
#

Yes, believe it or not. πŸ˜„

#

It's a bit too simple though, imo.

merry verge
#

neat

#

yeah that looks a bit simple, but it's a good start i guess

neat grotto
#

By "too simple" I mean you can't touch workspaces with it.

merry verge
#

ooh

neat grotto
#

It's basically just for logging in, syncing your workspace with a depot, and checking in/out files.

#

Everything else still requires P4V.

#

It's certainly a nice-looking GUI, especially coming from Perforce.

#

It's only compatible with workspaces that have Allwrite enabled, too.

#

If you don't, you get this when you login:

#

It also actively encourages you to submit changes without describing them. 😦

merry verge
#

ooof

neat grotto
#

You can click a big Upload changes button without adding a commit message, and adding a commit message is hidden in a dropdown.

#

If you don't add one, it adds a generic "Submitted with Helix Sync" message or something. It's nasty.

#

I will say one thing it does well is how it presents changes.

#

There's two tabs: one for your changes with buttons to upload them, and one for changes by others with buttons to download them.

#

It's a pretty clean way to see what you have checked out, and what work from others you haven't synced yet.

regal grotto
merry verge
#

Oh hey, just what I was talking about.

neat grotto
#

Thanks for proving their point.

simple lodge
simple lodge
stoic bluff
#

does anyone know if there is a tutorial for how to install perforce on ubuntu linux 20.04 vps? i found one but it does not explain typemap p4, so there will be read/write errors afaik

merry verge
simple lodge
merry verge
#

Ah, so not an officially supported thing yet. Shame.

simple lodge
#

EE has the feature, I extended it to work with regular pushes, not via webgui

merry verge
#

Ah ok.

simple lodge
#

if I have a month free (lol probably never happen), I might try and include it in lfs proper

#

functionally, its just a rest api that checks per branch and some git hooks

#

(hence being tied into gitlabs APIs)

fringe moth
#

@neat grotto
Is there a proper channel in this server to ask simple questions regarding licensing of UE?
Use-case seemingly not explicitly stated in EULA.
Mostly hoping to avoid long email correspondence if answer is here in slack/discord.

Question being: Can UE be repurposed as renderer middleware in a more capable in-house engine? If so, does it entitle licensee to usage of the Epic photogrammetry library?
Does it entitle licensee to usage of third-party libraries such as RAD and 3Lateral?
Question assumes that yes, all applicable royalties as dictated by EULA will be paid to Epic.

woven sluice
#

You should probably post this in #ue4-general

You also shouldn't ping the server owner with random questions

I'm also going to be very surprised if you could be successful at leveraging UE as a rendering engine inside of another app

I'm also going to be very surprised if your in house engine is actually "more capable" than UE if you're trying to find a renderer for your engine (maybe if your use case is completely outside of normal UE uses)

fringe moth
#

The inquiry wasn't about opinions, it is regarding licensing; thanks.

merry verge
#

This server isn't official - it isn't operated by Epic and any responses to licencing inquiries here are going to be opinions. And this is still the wrong channel to be asking for those.

fringe moth
#

I see, I didn't realize this wasn't operated by Epic. Thank you for letting me know
Is there a Slack channel operated by Epic?

woven sluice
#

Not a public one, no

merry verge
#

I suggest you contact Epic directly, they have a contact form on the custom licencing page.

fringe moth
#

Yes, thank you. We will do - only asked here for sake of convenience as we are just scoping.

storm sleet
merry verge
#

Mmm. I haven't actually used plastic and the wonky separation of workspace types has turned me off from trying it. Glad to hear it isn't quite as divided as I thought but it sounds like it still isn't quite as clean as it should be.

storm sleet
#

you can have multiple workspaces of different modes (partial, full) and easily convert between them. However, keeping the cloaked.conf and your gluon configuration in sync is tedious work and it's recommended to mostly work in one mode. The underlying repositories are completely compatible to both modes and developers working in modes they like

#

the distinction can be roughly like that: as a programmer you probably want to work with branches, and for branches (generating them, merging, ...) you need Plastic SCM anyways. The solution is: use Plastic SCM, add directories with pure art assets to cloaked.conf if you don't need them.
As an artist you can't merge binary files and want an easy workflow. Branches don't make sense and you often don't need the full product, but want to easily add/remove files from the repository to your workspace. The solution is: use Gluon.

Switching between them is easy enough (especially in recent version, literally just one click), but takes some time.

faint cairn
#

Anyone using Helix Swarm with Projects? Not quite understanding how the Branch Paths are supposed to work.

#

Documentation says to just add a path in depot format, which I did, but when going to Files afterwards, it doesn't use the depot path and can't find my folder.
Do I actively have to create a branch on P4s end that I mirror here?

#

Also typically, when searching for problems with P4, all you find is documentation that doesn't answer the problem

#

Also, iirc, P4 doesn't have branches in that regard, they only have Branch Mapping?

#

I could branch off, but why would I branch off if I don't need to. Swarm Projects should be able to just map to an existing non-branch path?

#

Main overview of Swarm lets me go through the depot just fine

#

Actually, it does find the path, testing with a wrong path, but the last folder in the path never opens up and reports 404. If I add another, deeper, folder at the end of the path, it goes one further. Is it expecting some file here?

#

Okay, branching doesn't actually solve this. Probably again one of those times where they multiuse a word

rocky snow
#

Hi! I tried looking around but does anyone has had any experience with using Git for your source control with a team of 15-30 people? Think_Neon

rocky snow
# simple lodge ye

Do you think it works well? What would be your opinion on it? Have you implemented file lock or did you find a workflow without it?

simple lodge
#

its fine

#

I think perforce might be easier for artists

#

but its very workable

#

Locks work but there is a bug that needs fixing

rocky snow
#

We're currently using Plastic but Git is free so I might have a look at it, I was just afraid the usual git workflow with many branch and no lock would create tons of issue when working with many assets, maps and blueprints

simple lodge
#

locks are global not branch independent without doing a lot of work

teal nebula
#

Is GH good enough for a small indie project?

#

or should I future proof it/standardize it with perforce?

neat grotto
teal nebula
#

thanks, I dont think I will need file locking yet.

#

I tried to setup Perforce but AWS wont send an SMS to my phone for some reason xD

#

so fuck it

#

I'll go with Git

royal turret
#

Would anyone want a 1 Click Perforce Deployment Button in their Unreal Engine Editor? And a 1 Button Interface for already Linked Perforce Servers? <.< just wondering.

neat grotto
royal turret
#

Made a Terraform Package for Deploying a perforce service, and wrapped it up in a Golang Restful API. I was thinking of making a Editor Plugin that would allow you to Check your Current Status on a Perforce Server, or if you don't have one. It would ask you for specific permissions and deploy it for you on a Cloud Platform of your choice. Right now I've coded it for AWS and GCP I'm working on Azure and It should work on Digital Ocean but via a restful API call not a terraform package.

#

cause man, I see alot of people ask about perforce XD and it annoyed the living hell out of me to setup the first time lol so I had to automate it

#

@.@

#

like this is the bash script I wrote for automating the perforce setup process

#
#!/usr/bin/env bash
set -e
P4USER=$(terraform output -raw perforce_username)
P4PASSWORD=$(terraform output -raw perforce_password)
HOST=$(terraform output -raw  perforce_address)

echo -e "\033[0;32m Perforce Setup: \033[0m Clearing $HOST from known_hosts"

ssh-keygen -f "/home/$USER/.ssh/known_hosts" -R "$HOST"

echo -e "\033[0;32m Perforce Setup: \033[0m Installing apt-key"

ssh -o "StrictHostKeyChecking no" -i output/private_key ${DEV_USERNAME}@${HOST} "sudo wget -qO - https://package.perforce.com/perforce.pubkey | sudo apt-key add -"

echo -e "\033[0;32m Perforce Setup: \033[0m Adding perforce to apt sources list"

ssh -i output/private_key ${DEV_USERNAME}@${HOST} "sudo cat <<EOF | sudo tee /etc/apt/sources.list.d/perforce.list
deb http://package.perforce.com/apt/ubuntu focal release
EOF"

echo -e "\033[0;32m Perforce Setup: \033[0m Installing Perforce...."

ssh -i output/private_key ${DEV_USERNAME}@${HOST} <<EOF
sudo apt-get update -y
sudo apt-get install helix-p4d ufw -y

sudo adduser perforce
sudo mkdir /opt/perforce/servers/${PERFORCE_NAME}
sudo chown perforce:perforce /opt/perforce/servers/${PERFORCE_NAME}
sudo mkdir /opt/perforce/servers/${PERFORCE_NAME}/ssl
sudo chown perforce:perforce /opt/perforce/servers/${PERFORCE_NAME}/ssl
sudo mkdir /var/log/perforce
sudo chown perforce:perforce /var/log/perforce

sudo /opt/perforce/sbin/configure-helix-p4d.sh ${PERFORCE_NAME} -n -p "ssl:1666" -r "/opt/perforce/servers/${PERFORCE_NAME}" -u ${P4USER} -P "${P4PASSWORD}" --case 1

# https://github.com/CB-Productions/PerforceGuideUE4/blob/master/index.md
# p4d -Gc # This needs to be Researched More~
p4dctl start -t p4d ${PERFORCE_NAME}
p4 trust -y
EOF
#
echo -e "\033[0;32m Perforce Setup: \033[0m Setting up p4config for default User..."

ssh -i output/private_key ${DEV_USERNAME}@${HOST} "sudo cat > ~/.p4config <<EOF
P4USER=${P4USER}
P4PORT=ssl:1666
P4PASSWD=${P4PASSWORD}
EOF"
ssh -i output/private_key ${DEV_USERNAME}@${HOST} <<EOF
sudo chmod 0600 ~/.p4config
sudo chown perforce:perforce ~/.p4config
EOF

echo -e "\033[0;32m Perforce Setup: \033[0m Logging into Perforce..."

ssh -i output/private_key ${DEV_USERNAME}@${HOST} "p4 login <<EOF
${P4PASSWORD}
EOF"

echo -e "\033[0;32m Perforce Setup: \033[0m Securing Perforce"

ssh -i output/private_key ${DEV_USERNAME}@${HOST} <<EOF
p4 configure set dm.user.noautocreate=2
p4 configure set run.users.authorize=1
p4 configure set dm.keys.hide=2
EOF
#
echo -e "\033[0;32m Perforce Setup: \033[0m Adding Perforce Typemaps.."

ssh -i output/private_key ${DEV_USERNAME}@${HOST} <<EOF
(p4 typemap -o; echo " binary+w //....exe") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....dll") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....lib") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....app") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....dylib") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....stub") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....ipa") | p4 typemap -i
(p4 typemap -o; echo " binary //....bmp") | p4 typemap -i
(p4 typemap -o; echo " text //....ini") | p4 typemap -i
(p4 typemap -o; echo " text //....config") | p4 typemap -i
(p4 typemap -o; echo " text //....cpp") | p4 typemap -i
(p4 typemap -o; echo " text //....h") | p4 typemap -i
(p4 typemap -o; echo " text //....c") | p4 typemap -i
(p4 typemap -o; echo " text //....cs") | p4 typemap -i
(p4 typemap -o; echo " text //....m") | p4 typemap -i
(p4 typemap -o; echo " text //....mm") | p4 typemap -i
(p4 typemap -o; echo " text //....py") | p4 typemap -i
(p4 typemap -o; echo " binary+l //....uasset") | p4 typemap -i
(p4 typemap -o; echo " binary+l //....umap") | p4 typemap -i
(p4 typemap -o; echo " binary+l //....upk") | p4 typemap -i
(p4 typemap -o; echo " binary+l //....udk") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....pdb") | p4 typemap -i
(p4 typemap -o; echo " binary+l //....umap") | p4 typemap -i
(p4 typemap -o; echo " binary+w //....so") | p4 typemap -i
(p4 typemap -o; echo " text+w //....target") | p4 typemap -i
(p4 typemap -o; echo " text+w //....modules") | p4 typemap -i
(p4 typemap -o; echo " text+w //....exe.config") | p4 typemap -i
(p4 typemap -o; echo " text+w //....dll.config") | p4 typemap -i
(p4 typemap -o; echo " text+w //....target.xml") | p4 typemap -i
(p4 typemap -o; echo " text+w //....version") | p4 typemap -i
(p4 typemap -o; echo " text //....uplugin") | p4 typemap -i
(p4 typemap -o; echo " text //....uproject") | p4 typemap -i
(p4 typemap -o; echo " text //....xml") | p4 typemap -i
(p4 typemap -o; echo " binary //....png") | p4 typemap -i
(p4 typemap -o; echo " text+w //....Automation.xml") | p4 typemap -i
EOF

echo -e "\033[0;32m Perforce Setup: \033[0m Setting up & Turning on Firewall."

ssh -i output/private_key ${DEV_USERNAME}@${HOST} <<EOF
sudo ufw allow 22
sudo ufw allow 1666
echo "y" | sudo ufw enable
EOF

echo -e "\033[0;32m Perforce Setup: \033[0m COMPLETE!"
#

let me know if you got any suggestions for it @neat grotto ❀️

#

but that'll more or less automate the deployment of your perforce. Well Minus some changes you'll have to make. And that is only for Linux based Systems. I can write a powershell one if you anyone needs.

#

Environment Variables

DEV_USERNAME=devuser
HOST=1.1.1.1
P4PASSWORD=test
P4USER=devuser
neat grotto
#

That's pretty cool. I'm sure there are people who would like to simplify their deployment process. πŸ™‚

#

Personally I don't mind spinning up a Perforce server these days because it's gotten a lot easier with their package-based installation, although further automating the spin up of a VPS and all that would be nice too.

royal turret
#

I made a whole terraform package but i've talked too abuncha other ue4 engineers they don't wanna mess with terraform XD or anything devops LoL

#

❀️ then i'll continue to work on it.

#

I wrote one for jenkins also

#

and UnrealMultiUser Service

#

XD

#

lol

neat grotto
#

Nice. Automate all the things. πŸ˜„

royal turret
#

damn right~

#

lolol

#

I also did 1 for GKE, and EKS but I doubt alot of peeps would use those here @.@

neat grotto
#

I'm pretty close to writing a new, up-to-date Perforce/Unreal tutorial. Most of the ones out there are out of date or incomplete, and I get a lot of clients asking me to set up Perforce for them.

royal turret
#

Oh then i'm not going to finish mine ❀️

#

use my code if you want πŸ˜„

#

its 100% correct

#

though i'm sure there is more typemaps too be added that i'm missing

#

I just haven't added them cause i don't know them

#

know what i mean?

neat grotto
#

Yeah. I'm not sure where to find an up to date typemap for UE4, hm... depends on how many new source assets are supported recently.

royal turret
#

yep

#

XD

neat grotto
#

Probably at least a few with all the new virtual production features.

royal turret
#

neither do I so yeah haven't added that too my setup script

#

yeah that was my thought

#

but yeah i'm going to make a lil Editor Plugin & Website for Automating a Deployment of Perforce too a Cloud Provider, it will ask for specific things and then bobs your uncle it'll deploy it for yah.

neat grotto
#

Nice.

royal turret
#

Did the backend, so it works really well XD lol but yeahhhhh frontend work ;-; I hate it.

#

anyways i'll let yah go :3 if you think of anything infrastructure wise that needs automated πŸ˜„ tell me ❀️ I would love a challenge lol

neat grotto
#

I will. Looking forward to seeing the final result of your deployment solution! Sounds neat.

twin gust
# quaint obsidian my fork fixes this: https://github.com/ProjectBorealis/UE4GitPlugin

hey sorry for the late reply but I took a look at this today and since I'm running the latest EA of UE5 I installed the latest commit from your pb-changes-ue5 branch - installation works great as well as connection but given the UI difference of UE4 and UE5 I can't seem to find the source control options for push/pull/sync etc, am I missing or not understanding something?

quaint obsidian
#

I haven't tested UE5 so much, but I tried to see what changes were made in the engine for source control. I'm not sure if the workflow changes now require interacting directly with assets in the content browser, and I don't really have time to test it though so if you can provide more info about how it's intended to work it would help out!

simple lodge
neat grotto
#

It has to be built manually.

simple lodge
#

@quaint obsidian If I build a binary and distribute it is that cool

quaint obsidian
#

sure

simple lodge
#

Ill try find some time this week then

twin gust
quaint obsidian
#

ah! we use .md5 for editor binary verification, so kinda included that into the workflow without thinking about those who don't use PBSync

#

I'll look into fixing that but as a workaround, you can add that as an empty file to your repo

quaint obsidian
#

oh I guess I can just add --

unkempt meteor
#

Noob question here: How can I share my c++ project with another dev without them having to rebuild? We're using Perforce, but every time he gets the project he has to rebuild in VS and it's a pain.

pulsar parcel
unkempt meteor
pulsar parcel
#

there's limited documentation, you'll find out about it by googling for UnrealGameSync

#

you can have sync filters in it too which are much faster than virtual streams

unkempt meteor
#

Cool, def sounds useful

regal grotto
warped perch
#

How do I make a developement stream in perforce without copying large files?

analog lodge
#

heya,
is it possible to have a shared global folder to use in several projects stored on a depot in perforce?

#

Working on a tv show atm and thinking about wether it makes sense to split it up per episode, because of the huge filesizes, but then having to migrate the global folders with presets and master materials etc...

#

Originally we had planned to work on one episode at a time, but now we have to start working on several episodes at the same time, which makes the migration of the glbal folders seem like a bad idea...

merry verge
#

What do you mean by shared global folder?

#

If you're asking whether you can have multiple projects under the same depot, the answer is yes. Just throw them into separate folders.

#

//depot/MyProject1/..., //depot/MyProject2/..., etc.

#

if it's a stream depot that makes things a little harder as streams always need a 2-level deep path for branches, but you could still work around it.

analog lodge
#

Well, lets say we have Season 1 episode 1, with a global folder in the content folder, where we store material libraries etc.
Now we wanna start working on Season 1 episode 2, in a new project, but have the same global folder.
My brain wants to think thats possible, but I donΒ΄t think it is.

woven sluice
#

you can import whatever folders from whatever depots/streams in whatever other depots/streams you want, via stream or workspace setup

analog lodge
#

So, instead we would have one large project for the whole season and use the global folder in there.

analog lodge
merry verge
#

Wait are you asking about having a shared folder between multiple projects?

analog lodge
#

Exactly

merry verge
#

Perforce will allow it... but unreal might not like it.

woven sluice
#

do you use streams or classic?

merry verge
#

With perforce it's dead simple to map a separate folder to your workspace either in a classic depot or with a virtual stream.

analog lodge
#

Yeah, but if Unreal doesnt like that, its no use.

merry verge
#

It's something you'd have to test. The perforce side of things is easy.

#

In a classic depot you'd end up with something like this in your workspace view. Stream depot would be similar but you'd be setting up a virtual stream to do this rather than a per-workspace view.

//Episode1/... //YOUR-WORKSPACE/...
//Shared/Content/GlobalContent/... //YOUR-WORKSPACE/Content/GlobalContent/...
#

perforce is pretty flexible about mapping depot paths to wherever you want in a workspace. So it's just a question of whether unreal will like it. And even if unreal works with it, you have to be super careful not to reference assets outside of the "global" folder from within it.

#

Though I'd honestly say you should rethink having separate projects at this point.

woven sluice
#

I guess UE might not like it because of import ID's or something right? I do this already with code/resource plugins but no Content

merry verge
#

Yeah, it depends on what project-specific stuff UE might serialize with content.

#

there's a reason you use the migrate button to move content between proejcts

analog lodge
#

Yeah, I donΒ΄t have the time to test it in Unreal, weΒ΄re already in full swing...
Its easier to just move everything into one big project.
We were mainly worried about having to backup huge files, as we canΒ΄t only rely on the VPS server in the cloud for that.

merry verge
#

I'd definitely say just throw everything in one big project and avoid the issue altogether.

#

You can even unmap some content folders if you don't want stuff from a finished episode or whatever

#

provided nothing depends on them.

analog lodge
#

Yeah, thats the idea now.
Use local workspaces to sort the data you need per episode and then have a backup workspace to sync all of the project.

merry verge
#

Yep, you can do that pretty easily - for a classic depot this would map everything except Content/OldEpisodeYouDontNeed

//depot/MyProject/... //your-workspace/...
-//depot/MyProject/Content/OldEpisodeYouDontNeed/... //your-workspace/MyProject/Content/OldEpisodeYouDontNeed/...
analog lodge
#

Thanks, but IΒ΄ll just do that manually in P4V. Its not that many people working on the project.

#

I just read too much about things going wrong and since its our first Unreal project, all these things are pretty anxiety inducing...:)

#

CanΒ΄t even simply rename or move an asset inside unreal without having to "fix up redirectors"....

#

One quick question though...

#

Can I simply rename a stream/depot?
Because we named our depot/stream with "Episode 01" now, but would like to rename it to "Season 1" instead.

merry verge
#

Uhh, maybe? P4Admin might be able to (or the equivalent command line stuff) but you'd probably have to have everyone update their workspaces to point at the new name. Which would be a bit of a pain.

woven sluice
#

i don't think it's trivial to rename a depot or parent stream

#

i've researched it once a long time ago and remember it sounded like a huge PITA

analog lodge
#

Yeah, its also not necessary. I just hate it if things have the wrong name, but we can live with it for the first season...:)

woven sluice
#

yeah I screwed up our game's mainline stream name too and it bugs me all the time πŸ™ƒ

merry verge
#

Hey, the project I'm on changed codenames mid-development so our depot and a lot of other tools have the old name but there's also a ton of stuff with the new name. The names aren't even remotely similar or have anything to do with each other lol.

warped perch
#

I want to develop a project for multiple versions for marketplace

#

My main project is about 1GB

#

when I create a developement stream without branching, It wants me to copy everything.

#

How do I avoid this?

#

If I branch, the server makes a duplicate. Is this ok? I want to be able to easily switch between streams

#

just like branches in Git

merry verge
jolly hare
#

Is it possible to have the perforce server run on my computer

#

And my friend to connect to it using my public ip

woven sluice
#

all I ever do is smallbrain mainline-only dev, but I think (???) based on my very limited experimentation, the way perforce has to work is it will always create a copy of all the files for the new stream on the server. it's kinda crap, though I really haven't experimented much with that yet

merry verge
#

it's technically an "integrate" operation (populate, usually used to setup branches, is just a large integrate). Not sure how that actually gets stored - if it's a literal copy or not - but it does retain history information.

#

Task streams are more akin to git lightweight branches - they only store actually changed files. But they're meant for small bits of work

woven sluice
#

my server definitely doubled its disk usage when I made a release branch πŸ˜„

#

guess I never tried task the same way

#

that sounds good/ok though

#

it sucked for me to test a release stream because it took like two hours to make the release branch ... and then, dismayed, I went back to mainline dev noobthonk

cyan jay
#

Perforce does not duplicate files on the server when they are branched, it just references them. Perforce use the term lazy copy and I think there's a way to view them somehow

shut belfry
#

Trying to work from home and lab PC. What's the most easy to set up and use way to get source control working?

woven sluice
#

gotta play with it this weekend

warped perch
#

Thanks a lot. I had to branch while creating stream indeed. now I can switch between streams quickly @merry verge

#

Is this good? πŸ˜…

#

As for the disk usage, it doesn't get duplicated on server which is good πŸ˜„

this is diskspace usage before and after I created 6 extra streams. (main stream is about 1 GB)

warped perch
icy atlas
#

The instructions on https://github.com/SRombauts/UE4GitPlugin just say to dump it in the plugins directory. But I guess you actually have to put it in and rename it as the folder names do not match, UE4GitPlugin-2.17-beta vs GitSourceControl)

woven sluice
# warped perch Its only getting more unstable πŸ™„ , but can't copy up because newer versions are...

Supporting a 3 year old engine seems silly... Other than that, seeing what you're doing now, I don't think this idea makes sense. Each version should stand alone and be in parallel from mainline. Or, maybe don't do any of this at all? Code compatibility for every engine all in one monolithic plugin version. If I had to guess I'd think that's what most plugin devs do anyway. Probably right and wrong depending

simple lodge
#

@quaint obsidian I remember finding an LFSv3 page with all the features they were hoping to add - cant seem to find it anymore. You dont happen to know where it is?

regal grotto
warped perch
# woven sluice Supporting a 3 year old engine seems silly... Other than that, seeing what you'r...

Unfortunately these are blueprint assets. so for example something is deprecated or changed in 4.22, I fix the issue in that version. I would like the changes to automatically integrate to later versions.

lets say I get a conflict during this integration, for example in 4.24 I have had added a feature to a blueprint. since blueprints can't be merged, I have to manually fix 4.24 (instead of merging 4.23 to 4.24) and automatically integrate 4.24 to later versions. I hope that makes sense

If I make all versions parallel from 4.20, I can't integrate from middle versions to later versions. or can I? (well i guess I can but I have to do it manually and be more careful about doing it)

warped perch
#

It didn't turn out the way I wanted to. even though base files are identical, the integration process wants me to resolve manually for binary files. tedious 😦

cyan jay
#

I'm not quite sure what you're doing, but the p4 cmd line is quite powerful for automating integrations, and in fact in the past I wrote a python script to automatically respond to each question in the integrate step automatically.

warped perch
#

using this option fixed my problem

woven sluice
#

Sorry, was naively thinking of code of course

shut belfry
#

Does connecting ue4 to git not include cpp classes?

#

Do I need to set that seperately?

quaint obsidian
#

yeah, unreal engine source control generally does not support anything other than Content & Config folders, and uproject file

warped perch
#

visual studio can also be connected to git to control that side of your project.

cinder adder
cinder adder
quaint obsidian
#

VS git doesn't work with LFS last I checked, so be careful

#

it can corrupt your commits

swift oriole
#

Who faced this problem? The project weighed 20.5 GB, I divided the assets and transferred them to another folder, now the project began to weigh 6.5 GB, but still the error indicates that the file is too large, the Internet connection is stable, the LAN speed is 600 Mbps. I tried different methods with changing the buffer value and other fixes, but nothing helps.

eternal mountain
#

πŸ‘‹ heya, how do you handle engine content with git? specifically the Perception Neuron Mocap Plugin, I'm unable to migrate or copy the content to my project content (empty folders). Set up another repo for the engine content?

swift oriole
#

Up to 2 GB uploads and stops file transfers to a remote Github server.

eternal mountain
#

hey sorry input, wasn't meant as an answer to your problem haha

woven sluice
#

@swift oriole I don't use git but I know to ask: are you using LFS?

quaint obsidian
#

doesnt look like it

quaint obsidian
eternal mountain
#

@quaint obsidian i see, thank you! project is only a few weeks duration and it's only one checkbox, not sure if worth it XD

swift oriole
analog lodge
#

This probably gets asked all the time...but I wanna switch my shortfilm project to UE5.
Whats the recommended way to do this with perforce?
I have the UE4 version on perforce.
I also have opened the project with UE5, which creates a copy in a different folder.
Should I now....:
A) Simply copy over the UE5 folder to the workspace folder of the UE4 project and then submit everything as changes?
B) format the perforce server and set it up fresh with the UE5 project?

cyan jay
#

A for sure - you can copy it over then use Reconcile Offline Work to capture all the changes.

simple lodge
strong nebula
#

Is a feature branch workflow common in game dev?

summer lantern
#

P4V question - is there an easy way to break an exclusive lock someone has over a particular file (so that I can steal said lock)?

summer lantern
#

seems to introduce all manner of weirdness depending on your various pipelines and introduces never-ending faff

strong nebula
#

Ive been a professional developer for over a decade and ive only ever used git with a feature branch rebase workflow... so having some learning pains trying to imagine an alternate universe where everyone just pushes whatever to master

#

its a me problem not a source control problem, i was just curious

summer lantern
#

pushing to master is fine - you just need to make sure production is on top of it and you schedule periods of time wherein you're not committing potentially damaging changes / are more interested in promoting fixes and stability

#

branching is a huge pain when you have a lot of binary assets that frequently get revised or passed around

strong nebula
#

yeah thats definitely the X factor here, not used to dealing with binaries

summer lantern
#

you can't merge them, so anywhere where you get dependencies becomes hell

#

especially if you set up things like overnight processes, e.g. for building lightmaps, LoDs etc

#

and you have to maintain approximate binary parity between multiple branches

#

then there's the possible issue of data loss wherein your engineering branch might splat over the archetypal versions of assets etc

strong nebula
#

I think I saw something about plastic trying to help this by supporting different workflows for artists vs developers, but i dont know how successful or complicated it is. I am just reading about options now as I learn about UE and want to start on an actual project

summer lantern
#

we have a custom layer on top of Perforce that prevents content creators and artists from syncing past any change list marked as 'content breaking' by the respective engineer (i.e content requires new executable binaries etc), and also have a little personal discipline involved wherein engineers don't commit those changes until end of day

#

it's not ideal, but it does work at least

strong nebula
#

Alright, I appreciate your insight. Off to look for simple perforce hosting

simple lodge
simple lodge
summer lantern
#

that... doesn't make sense - you're just doubling your computational requirements for no actual gain? You still have to merge the branches at some point, so why not do it after things like baking?

#

Like, if an artist commits changes that require a rebuild of HLODs and lighting, build it, then merge it into the master or merge it into the master and build it

#

building twice just means running twice as many overnight tasks?

simple lodge
#

Yes its extra compute, but its not that expensive in compute time

quaint obsidian
#

also we do feature branching for programmers, they keep a lock until it gets merged into one of our main branches

#

but we much prefer trunk based now because there's so many problems with the workflow in general

#

it makes things less of a team effort, and branches become stale during review

#

of course, there's a few cases where it's useful for isolating very large breaking changes that go on for a while, but usually that's an anti pattern vs. incremental change

analog lodge
vale carbon
#

Anyone use git/lfs with UE4? I'm trying to determine if I want to use it over PlasticSCM for future projects.

open lynx
#

Does anybody use Source Tree? Is it possible to expose Custom Actions on toolbar?

open lynx
#

@vale carbon Git+LFS is a good option. At least you always find help, as git is very popular. And I guess most of game developers use Git+LFS, including myself.

vale carbon
#

I've used Plastic for a year and a half and it's been fine (team size was ~10), but long term I don't want to pay when my team grows. Perforce is just too expensive also. I've used git for a long time, but never for UE4 so I'm testing it atm with a small project. I was just curious if there's any gotchas with git and how popular it is with UE4?

open lynx
open lynx
vale carbon
#

Yeah lol. I wouldn't use regular git for this haha.

quaint obsidian
#

We use it for a 60 person team!

#

works really well :D

hot moat
quaint obsidian
#

Yep!

jolly fog
#

hey i am trying to setup perforce, but i have some questions.

#

i have a workspace folder where inside is the project i want

#

i sumbited everything i want to depot

#

everytime i open the pc should i open first the p4 and then the project

#

?

vale carbon
#

@quaint obsidian do you use branching? What's the workflow for adding a new feature etc?

trim rune
#

I am trying to get a Helix Core Server running on my local machine, unfortunately it is not working the way I think it should. I have forwarded port 1666 on my router, through my local computer (server) IP. Unfortunately the connection with the Helix Core Client fails. Can someone help me?

vale carbon
#

Ah awesome. Thanks for the links. πŸ˜„

mossy cave
#

Can someone here please help me understand why does unrealtournament editor hard crash without any explanation in the crash log after I try to connect to source control
Here are some images, in the first one I can open my project from perforce meaning I have copied over the files from unrealtournamenteditor to perforce. I have submitted a map with a name. But in the second image when I try to connect to perforce it insta crashes

frosty stirrup
#

Can someone help me figure out how to get rid of this? We had a temporary file in the depot that was to be replaced with our name for the folder. This DeleteMe.txt is preventing me from submitting to source control. Cant figure out how to remove it / prevent UE from trying to upload this

twin gust
quaint obsidian
#

hmm that's weird

#

Yeah I'm not sure where that menu went

quaint obsidian
quaint obsidian
#

highlights:

  • Pure SSH protocol support
  • Prune can now be more aggressive, and clear the entire LFS object cache, reducing disk usage by half!
  • Added multiple arguments to lock and unlock
  • Improved file pattern matching
mystic walrus
#

Note to self, gitlab's unreal git ignore does not play nice with c++ projects, but is fine with blueprint projects, okay then.

quaint obsidian
coral magnet
#

Question for anyone who works in a large team with perforce. Do you take advantage of perforce' multi server architecture ? Or does the one perforce server the teams need ? I only have the one and that's all I need, but I'm just curious as I came across it the other day while transferring my windows home server to a linux server (twice).

cyan jay
#

I've seen in a few places that teams have a single main server, then multiple Edge servers for distributing load. For example auto build/test machines have one Edge, other company sites would have an Edge, even teams within the same building might connect via an Edge server.

#

but the last place I worked had a single server for ~80 people with no problems.

sly crown
#

Hi all πŸ™‚ I am running an investigation on Source Control. If any of you Perforce users can answer me a question it will be very appreciated. If you have an asset open (but you're not editing it); someone else's check in a new version of the asset and you try to update your local revision to the new one, does it actually update? I am trying with another SCM and it looks like Unreal blocks the asset if there is an editor using it. For instance, if I open a map using a certain material and someone else's update the material, I can't get the latest revision for that material as long as the editor is open.

rotund bobcat
#

the source control plugins for unreal do something for this

#

I think doing this on any vcs will cause this issue unless it's specific through a unreal ui for that vcs

sly crown
#

So @rotund bobcat you mean if I do the same operation with the plugin or the vcs client I won't get the same result? :S

rotund bobcat
#

at least with git I know that pulling from e.g. cmd with the editor open causes those issues, while pulling with the plugin of unreal does not

sly crown
#

Ok thank you, I'll check with the plugin πŸ™‚

jolly fog
#

Hi i'm trying to push my project to source control with github desktop but it say cannot publish unborn HEAD so i added a readme files to the repo first but stil giving the error, i tried also to commit first but some files are over 100mb

woven sluice
sly crown
#

I am 100% with you @woven sluice, however there's lot of people used to this bad practice.

#

The "single source of truth" principle is broken in my opinion if you're able to partially update your workspace tree.

#

But sometimes it is not about what you think is correct but about what you can do πŸ™‚

woven sluice
#

Well what you can do is leg those team members HaroldHaha

sly crown
#

Hahaha

merry verge
# coral magnet Question for anyone who works in a large team with perforce. Do you take advanta...

From experience - with a large setup (multi-studio AAA project with 1000+ people on it, for context) multiple perforce proxies is all but required. At least one proxy per major studio location to make sure latency isn't an issue for developers working out of that office. It also provides some resiliency - for example, the studio uses a separate proxy just for the CI pipeline so that the heavy load from the build system constantly resyncing files across hundreds of machines doesn't affect any of the developer-facing proxies or main server.
It's very much something you don't need to think about unless you're working IT at a large studio though.

simple lodge
trim rune
#

I have a problem whit the clients Checkout. the client cant the server files not download. can anyone help me?

cyan jay
#

Never seen that before. Does it happen everytime?

trim rune
woven sluice
#

I think hardly anyone in here uses SVN... there are all kinds of suggestions on google/stack overflow for that error I guess

quaint obsidian
#

Git LFS v3 coming out today @long hull

long hull
trim rune
woven sluice
#

That's super weird... Are the SVN server and the perforce server both using the same disk drive?

trim rune
#

It gives me several errors when uploading, as well as when checking out the client. The errors are different each time. Sometimes there are 3, then again 8 or more.

#

It seems that the content folder is the problem. Better said something that is in it.

Because even on the HTTP SVN page I could not download the content folder without server crash.

I had to download all subfolders individually.

warped perch
#

it says files are corrupted. did you check what's wrong with those files? @trim rune

#

maybe delete them, or temporarily ignore them.

woeful coral
#

In an ue project using cpp, are the any files that I can include in git so that an artist can work on it without building/having visual studio installed?

brittle smelt
woeful coral
#

Thank you!

native brook
#

Any idea why when I list Binaries/ in the .p4ignore file it actually ignores the appropriate file, while if I list GameName/Binaries/ it doesn't ignore it anymore? Is that not the correct way to tell P4 to ignore the GameName/Binaries folder?

upper current
#

anyone got any idea how to copy a specific version of a file from the depot to some arbitrary location.
E.g changelist 243 has one blueprint.uasset that I want to look at

native brook
upper current
#

get revision on that files history worked, but only if I reverted the current checked out version of the file first in my case with shelve + revert

#

forgot to mention this was in p4, for future ref

shut canyon
#

Hi there, I'm interested on using this tool with my team. Can I ask how are you getting along with the features documentation? This is so that I can present it as an option to the other devs. Thanks!

quaint obsidian
jolly fog
#

Hey guys

#

I'm getting this error when trying to push my changes to the GitHub repository. Not sure how to get around it. I'm learning UE4 version control distancing myself from Unity colloborate. I have almost 6k items I'm pushing

#

Any help would be appreciated

#

This is my initial commit, if you guys have any ideas please @ me with any ideas

woven sluice
#

Isn't it pretty well documented the push limit is 2gb? Are you using LFS? @jolly fog

jolly fog
#

@woven sluice Thank you for the response

#

I have it installed

#

Let me see if it is being utilized

shut canyon
quaint obsidian
jolly fog
#

I don't think it is being used

#

Do I need to configure it to my repository or just make sure it is generally installed

#

Just ran these commands in git bash

quaint obsidian
#

git lfs track is per repo

#

and it should be umap and uasset

#

and then once you do that, you will need to recommit your assets, or rewrite history using the git lfs migrate command

jolly fog
#

Thank you mastercoms

shut canyon
# quaint obsidian It should

Maybe I'm doing something dumb. I'm getting an error "The following modules are missing or built with a different engine version: GitSourceControl" Should I checkout any particular branch?
I just copied the git project into Myproject/Plugins

quaint obsidian
#

Binaries are not included with it, you have to recompile

shut canyon
#

righto

jolly fog
#

I managed to get it working it is going further than last time

#

Thank you @quaint obsidian

#

git bashed to the project directory then ran your said commands to use

jolly fog
#

It still failed 😦

#

LFS looks to be working now though

quaint obsidian
#

you need to migrate

#

git lfs migrate import --fixup

jolly fog
#

Just ran that command it did something

#

i'll try it again now

#

i see the problem

#

I actually went over the LFS quota

#

My bad

#

received this error: Remote fatal pack exceeds maximum allowed size

#

Is there anyway I can split the push into 2 seperate ones

#

To get it through it seems to be hung up on 1 large push

quaint obsidian
#

That would not help if you are going over the LFS quota

jolly fog
#

I bought a data pack so I have more

#

I now have 50 and it shows 3.3 used