#source-control

1 messages ยท Page 5 of 1

haughty wedge
#

and I'm here with the people who will resist my ideas to make them stronger

teal bone
#

I've spent a year and a half using p4 daily and I still don't understand a lot of it (simply because I don't deal with it).

#

You aren't going to learn everything in 3 days.

haughty wedge
#

of course not

#

everything else will be 100% normal workflow, the epic way

#

just wanna use git to track code too...

teal bone
#

The Epic way is to use p4 for everything, including code.

merry verge
#

I've spent much longer with p4 and I'm not sure why you'd want to subject anyone to commiting to multiple unrelated source control systems with a number of places that things can get messed up.

haughty wedge
#

doesn't seem that crazy. I'm pretty confident many AAA studios do this

merry verge
#

Here's a question - what happens with the index file?

teal bone
#

P4 updates are then copied to git.

merry verge
#

For game code at least.

haughty wedge
merry verge
#

.git/index

#

binary file

haughty wedge
#

it is kept?

#

lol

merry verge
#

yes

#

I'm not huge on git internals, but my understanding is it stores something like the expected state of the working tree

haughty wedge
#

yes

merry verge
#

which means not having it makes git think no files are committed

#

and it means that it changes over time

haughty wedge
#

yes you need all of the .git folder yes

merry verge
#

this is a binary file that changes over time. It isn't mergable, and stomping will lose data.

haughty wedge
#

it's a tiny file

merry verge
#

It doesn't matter

#

I'm not talking about file size

#

I'm talking about core parts of a git repo that can't be simply copied over itself

haughty wedge
#

it can be copied over

#

with a full different .git folder

#

if that new .git folder is also valid

teal bone
#

I think he's saying that the index file is likely to be unique per user because it has their own commits in it which may or may not have bene pushed.

haughty wedge
#

and if the .git folder was created from the first one, they will be very similar

teal bone
#

And so overwriting it is going to break everything.

haughty wedge
#

why would it?

merry verge
#

the issue is not that the perforce repository will ever be wrong

#

the issue is that you're inviting people to break their local changes

haughty wedge
#

nobody should care about their local changes

#

loll

merry verge
#

and this is why you shouldn't do it

haughty wedge
#

you commit those

#

then it's fine

#

WAT

merry verge
#

and when someone forgets?

#

when you make someone lose a bunch of work?

#

oh well?

haughty wedge
#

when someone forgets you tell them to not be an idiot next time?

merry verge
#

that's not being an idiot

haughty wedge
#

who would lose a bunch of work!?!/

#

wait so like

#

someone forgets to essentially save their work

merry verge
#

I regularly pull in new changes through out the day with work that isn't finished.

haughty wedge
#

how is that a problem?

merry verge
#

No, they saved.

teal bone
#

"Nobody should care about their local changes" -> end of discussion, doesn't understand source control

merry verge
#

They didn't commit.

haughty wedge
#

ohhhh

#

you wouldn't be pulling down the P4 git repo

#

you could pull down any changes for all the other assets tho

merry verge
#

except I would be

#

I want the newest changes from git

haughty wedge
#

while you're working on code, you don't pull down some random other code into your unsaved changes

merry verge
#

I need someone else' changes

haughty wedge
#

yes you can pull from git no problem

#

thats why we use git! lol

#

the coders use git

merry verge
#

wait so you are mirroring a github repo to perforce then

#

I'm so confused

haughty wedge
#

hmmm not mirroring it no

merry verge
#

I don't care what you call it

haughty wedge
#

because not the entirety of the git history is saved to p4

teal bone
# merry verge all the time

Me too. I've had a change list open on p4 for over a month (because of christmas break + illness) and I regularly update the p4 repo and merge in changes from other people.

merry verge
#

you're running some script to copy the entire git repo, .git and all, over to perforce.

haughty wedge
#

p4 only sees what it sees not what git sees

#

nope no scripts

#

loll wat

#

how often do you use git?

merry verge
teal bone
#

We don't get control over that, sadly. ๐Ÿ˜ฆ

merry verge
haughty wedge
#

it sounds like using git for code would make ur lives easier lolll

#

nobody is manually copying any git repo

merry verge
#

It absolutely wouldn't.

haughty wedge
#

it's created in place

merry verge
#

Something has to submit your git repo to perforce

#

It doesn't magically get uploaded out of nowhere

haughty wedge
#

the git repo IS IN THE PERFORCE WORKSPACE

merry verge
#

Yes, and that has to be committed to perforce somehow

haughty wedge
#

yes

#

the same way normally done

merry verge
#

perforce won't let you do that without syncing latest (or promising the server you have but not actually doing that).
Which would stomp on local changes.

haughty wedge
#

wat

merry verge
#

You can't upload arbitrary files to a perforce depot when those files already exist

haughty wedge
#

you check them out first

#

...

merry verge
#

And now we're back to "p4 sync stomping git files"

haughty wedge
#

why would that happen?

#

you check them out BEFORE you make changes, if p4 INSISTS on overwriting any local changes on checkout

#

but that doesn't seem like what p4 does. in UR editor, you just have to click checkout first when saving. you don't lose your work, right?

#

UE*

merry verge
#

I'm not talking about p4 checkouts

haughty wedge
#

I'm gonna set it all up tonight and tomorrow and test soe things

merry verge
#

If you want to grab the latest changes to code, you need to sync from perforce not git.

#

given your scheme

haughty wedge
#

do you mean, if you have some local changes on some code, and you wanna sync to the depot, it will make you overwrite your local code changes first?

merry verge
#

Yes. Or merge them with latest at least.

haughty wedge
#

why couldn't you sync from git?

merry verge
#

because there's no origin

#

where is it going to pull from?

haughty wedge
#

you are essentially checking out all files in the git repo, making arbitrary changes, and submitting them back

merry verge
#

the perforce server is not a valid origin

teal bone
#

You have a git repo on github or whatever.

haughty wedge
#

yeah

#

git is separate lol

merry verge
#

so you need to commit, push, and then commit to perforce? man this is a lot of work just to submit files

haughty wedge
#

yeah you just have to document a tiny bit more really

merry verge
#

and it still doesn't get around the fact that you need to sync the latest version of your git repo from what's stored in perforce before it'll let you submit your updated files

haughty wedge
#

like commit code to git multiple times, then commit to p4

merry verge
#

which is an opportunity to stomp critical git files.

#

like .git/index

haughty wedge
teal bone
haughty wedge
#

yeaaah

merry verge
#

...so someone is manually updating perforce

#

like I said

#

and you said no

teal bone
#

I think that was just a terminology issue.

haughty wedge
#

do you submit a changelist every time you save a code file?

merry verge
#

every time I want other people to have the code, yes

haughty wedge
#

yes

#

so thats the same thing then

#

no difference

#

with git, you PUSH when you wanna share

teal bone
#

Honestly, why do you even need your code on perforce? Just add the compiled binaries every so often.

merry verge
#

I'm aware of how git works

haughty wedge
#

but you commit only when you wanna retain the changes and the history

teal bone
#

Whatever the option you take is, it should not be one that adds .git to your p4 repo.

merry verge
#

that runs into the issue of code/content being out of sync. Which tbh is an issue for studios anyway if they aren't building every commit.

haughty wedge
#

but it would be nice to have EVERYTHING in p4 just to be able to abandon the janky workflow and stick to p4 lol

merry verge
#

this is a janky workflow

haughty wedge
#

yes it IS

#

I know

#

as are many workflows in gamedev

#

lollll

merry verge
#

what are you talking about

haughty wedge
#

c++17 is not modern dude

#

lolll

merry verge
#

submitting code has rarely been one of those janky workflows

teal bone
haughty wedge
#

std is a well used library

#

lol

merry verge
#

"gamedev doesn't use std and consoles are stuck on C++17, guess I should throw everything else out"

#

that's not a great argument

haughty wedge
#

that's not the argument

#

just saying that gamedev is jank

#

lol

#

though UE5 is makign it way less jank

#

which is why I'm interested in it

teal bone
#

Do all consoles do c++17 these days? Any outliers still on 14 or whatever?

merry verge
#

All consoles UE5 supports

#

hence why the min target is C++17

haughty wedge
#

do the consoles all have specific compilers?

merry verge
#

yes

haughty wedge
#

ah ok

teal bone
#

Yeah. I don't necessarily mean UE consoles ๐Ÿ˜›

haughty wedge
#

so maybe the fact that p4 uses timestamps to compare files could be a problem too?>

merry verge
#

it doesn't

haughty wedge
#

cause git can have file change times changing all the time

#

ohh ok

#

nvm I thought I just heard that's how it compares files to detect changes?

#

listening to some YT vid in the background lol

merry verge
#

perforce doesn't detect changes unless you reconcile offline work, which asks the server for hashed versions of files.

#

if it were based on timestamp then reconcile would actually work way better than it does (or at least faster)

teal bone
#

If only clean worked way faster. ๐Ÿ˜ฆ

merry verge
#

it's the same basic operation

#

as is revert unchanged

haughty wedge
#

ok so the local client is responsible for determining the changes

teal bone
#

Yeah.

merry verge
#

perforce will let you submit unchanged files if you really want

teal bone
#

It takes longer to clean the ue5 repo than ti does to compile the engine ๐Ÿ˜„

haughty wedge
#

I think this is gonna work fine

merry verge
#

kind of annoying to pollute history this way

haughty wedge
#

and if it doesn't we just delete the .git files and continue on with p4 like nothing happened

#

I think there is an option to only sync changed files right

merry verge
#

not sure what you mean

#

like to get the latest version?

#

that's the default

teal bone
#

If it downloaded the entire repo for a sync, you'd be in trouble.

haughty wedge
#

I don't know I was listening to the UE livestream from a few years back, and they said to enable some option to only update changed files not all of them no matter what

merry verge
#

the perforce server maintains a database of what version of each file you have. It will only send you a new version if there's a new version available.

#

Unless you force sync which always downloads whatever version you asked for even if you already had it.

haughty wedge
#

so really, in my zany workflow, the coders should have their own stream that they use git with, and then they are done, they forward their stream up to the depot to be integrated with the main stream.

#

so the person in charge of code can be the one who makes sure that the code being sent up is exactly right.

#

ideally, the addition of git is just a tool for the coders to use, and provides no hurdles for anyone else whatsoever

merry verge
#

at that point you might as well just use helix4git

fair monolith
#

What exactly does Helix4Git do?

teal bone
#

Allows you to use git clients for p4

#

It doesn't give you a git repo, it just transposes the commands.

fair monolith
#

The docs are relatively scarce

#

So you give it git commands and it does P4 things?

teal bone
#

Something like that.

teal bone
#

Shrug

merry verge
#

So just make something that pulls from p4 and pushes to github once a day

teal bone
#

Sounds like he wants to shoehorn his git workflow into p4 for no good reason

merry verge
#

or on every submit

#

or every time someone presses a button

fair monolith
#

For now I'm still trying to use P4 for daily things. Some things it's great for. C++ dev is a terrible experience in P4 tho compared to Git. It's not about the command syntax, it's about the merge tools, and merging is definitely NOT P4's strength.

#

P4 just wants to copy files everywhere which is fine for binaries but tremendously limiting when it comes to C++

merry verge
#

Not really sure what you mean by that

#

Perforce's merge tools are generally fine

#

p4merge itself is a decent if simple merge tool, but it's not even the only option

#

biggest problem is not being able to easily build commits on top of each other, but that's solved with a task stream

fair monolith
#

P4 loses text merge info from what I can tell.

#

Say I have a file with value 'A'

#

I merge this into my dev branch, but here I need the value 'B'

#

I can merge this change into Git and then never mess with it again

#

In P4 the only way to get the dev changes are to merge the 'B' value in and manually fix it each time.

#

It's copying files with little to no attention to the previous merge operations.

merry verge
#

Pretty sure I've had that kind of thing work perfectly fine

teal bone
#

Me too.

merry verge
#

sounds like you weren't integrating files across branches correctly

#

which is unfortunately a thing you can get wrong

#

perforce absolutely retains cross-branch history if you use the right operation

fair monolith
#

Perhaps I messed something up when trying this with P4.

haughty wedge
#

probably wouldn't be sovled with my dumb gitp4 workflow lol

teal bone
#

Or you weren't storing your files as "text" (as utf8 or whtaever) it has real trouble merging across encodings.

fair monolith
#

I'll give it another try.

haughty wedge
#

utf16

merry verge
#

ah yeah, p4 encoding stuff is also dumb

haughty wedge
#

no?

merry verge
#

p4 is somewhat dumb about utf

haughty wedge
#

btw xist, helix4git is more about just the commands and caching stuff so the fetching/pushing workflow feels more the same as git, and is optimized for speed using that way

merry verge
fair monolith
#

Thanks everyone for the discussion. It has been helpful. ๐Ÿ‘

merry verge
#

p4v also has an integration operation

haughty wedge
#

why does this merging process sound so horrible lol

#

gimme dat git

#

yeah this has given me so much clarity. I know to be careful of my stupid plan and be ready to bail

fair monolith
#

@haughty wedge ultimately Git works great for small teams where you can ensure that no 2 people edit the same binary at the same time.

teal bone
#

Tbh, I've never had an issue with merging with p4.

fair monolith
#

It's only for larger teams that Git loses viability.

merry verge
#

the merge process is fine, integrate is generally the right thing to use and if you just want everything in one branch to merge to another you can specify them as source/target and be done with it. Or you can do just with limited directories/files.

teal bone
#

LFS has locking, right? Or something like that.

merry verge
#

LFS locking sucks

#

it works, but it's cross-branch and doesn't auto-unlock when you push.

haughty wedge
#

Yeah I wanna learn p4 just for the challenge because I kinda might wanna make a career working with UE

#

which sounds stupid when I wanna jam git in it

teal bone
haughty wedge
#

but I also love open source and git and github so sue me lol

fair monolith
merry verge
teal bone
#

And it certainly doesn't have a zany git integration.

haughty wedge
#

I will be using it that way too!

#

there is no integration of git

#

it's just using git to manage the code before you submit your changelist

teal bone
#

...semantics...

haughty wedge
#

loll

#

integration implies working well together

#

๐Ÿ˜›

teal bone
#

Not necessarily "well"

haughty wedge
#

yeah

#

you implied more of a barely working scenario lol

teal bone
#

Which is what you'd have.

haughty wedge
#

but there is really no interaction with git and p4, other than p4 dumbly tracking the .git folder

#

picture the .git folder like one file per actor

#

you'll have tons of little changes

#

just forget about it

mighty light
#

In my experience if you are trying to get 2 technologies (probably which are older than you) to work together and you can't find any information about it and it seems very difficult to get working, there's problem a good reason... Like they aren't designed to be used that way

haughty wedge
#

pardon me

#

I was alive when git was invented

#

I remember it

#

I was out of high school

mighty light
#

I added some probability to my assumption

haughty wedge
#

hahaha

teal bone
#

There are plenty of examples and premade systems to get p4 and git to work together.

#

Just not the way he wants.

haughty wedge
#

can you share some of those actually?

#

I dont think I want helix4git

teal bone
#

I don't know them off hand, but our project uses one for integrating git/p4 with bidirectional commits.

haughty wedge
#

yeah the problem is just a general problem of internet searches these days: finding a needle in a haystack. Lots of talk about p4, git, p4 and git, helix4git but impossible to find exactly what I'm looking for

#

ChatGPT didn't tell me no

#

That means that in a general sense people are doing it.

#

ChatGPT will shut you down over and over if it has no clue wtf ur talkin about lol

#

If ChatGPT tells you to do something

#

you do it

merry verge
#

But I think helix4git is what you want...

#

again, just write a 2 line script to pull from perforce and push to github

#

or vice versa - no clue if it'd work but it would take a moment to test.

haughty wedge
#

ok that's not a bad idea really

#

I will also look into this

#

thank you

merry verge
#

and you can set it on a p4 trigger to happen automatically (or have github trigger it for that side)

haughty wedge
#

tbh that definitely probably i better hahaha

#

I wonder if helix4git will work with VS2022 and be invisible

#

if set up correctly

#

Commit, write commit message, push

#

I assume that helix4git treats commits as just saves, and when you "push" in git that is when it makes a changelist, essentially squashing all the commits

#

then submits to p4

#

then scripts get triggered, push to gh

#

lol

#

might be best

#

but actually I'm gonna try the other way first because it should have very little set up

#

helix4git is a whole wormhole

teal bone
#

Just learn how to use p4

quaint obsidian
#

just use git entirely ๐Ÿ˜œ

merry verge
#

I did say just choose one or the other ยฏ_(ใƒ„)_/ยฏ

mighty light
teal bone
#

Put everything on dropbox and you're sorted.

quaint obsidian
#

i didnt read the full 1000 messages :p

mighty light
teal bone
#

rsync mate

mighty light
#

Does Dropbox do file history?

teal bone
#

I highly doubt it.

#

That was a very facetious answer.

mighty light
#

Better make it a Google doc instead then

teal bone
#

If you put all your code in the 1 google document, you can't lose it!

haughty wedge
#

google drive does revisions at least on text files lol

#

but only for 30 days

#

or less I think

#

but you can choose to keep them individually manually

mighty light
haughty wedge
#

that is how I will backup my local p4 asset db lolll

#

omg

merry verge
#

better than no backups i guess

haughty wedge
#

no merge conflicts with no merges

#

one file per project

#

so my jank setup is local p4 -> git -> Google Drive -> Google Docs -> laser printer -> mailed to Tim Sweeney -> ??? -> Profit

teal bone
haughty wedge
#

anybody know where and when I have to set the option for atomic checkouts?

#

The option to enforce atomic checkouts in Helix Core is typically located in the server's administration settings. Specifically, it can be found in the Perforce Server Configuration settings. To access the server configuration settings, you will need to log in to the Helix Core server as an administrator and navigate to the "Admin" menu. From there, you should be able to find the "Server Configuration" option, where you can access the settings related to atomic checkouts.

Once you are in the Server Configuration, look for the "atomic-checkouts" option. You can set it to "all" to enforce atomic checkouts on all files and folders, or you can set it to "none" to disable atomic checkouts. If you want to enforce atomic checkouts on specific folders, you can set the option to "paths" and specify the folders you want to enforce atomic checkouts on.

You can also check perforce documentation on how to configure this option.

#

is that true?

#

lolll

#

I can't find anything about that option in p4 docs

#

๐Ÿ˜

#

I apologize for the confusion, I made a mistake in my previous response. Atomic checkouts is not a built-in feature in Helix Core (formerly known as Perforce). However, you can still achieve similar behavior by creating a script or program that will enforce atomic checkouts by checking out/checking in all files within a folder at the same time. This could be achieved through using the command line interface (CLI) of Helix Core and scripting it to check out all files within a folder. It could also be achieved through using a plugin or extension to the Helix Core client that adds this functionality.

teal bone
#

Stop using chatgpt.

#

It is an extremely unreliable source of information.

haughty wedge
#

haha yeah so without the ability to enforce the checkout of the entire repo this is no bueno

#

I guess we could say "Hey coders remember to checkout the whole folder" lol

#

that is how I will start lol

drifting mason
#

What do these errors mean and should I be worried?

haughty wedge
#

ur git settings

#

are they set to change the line endings?

haughty wedge
#

maybe this is definitely the right solution

bright kelp
#

Hey there, quick question about Perforce:
When my artist add some new meshes in the level and then Submit these changes, I get an exclamation mark on the level asset that told me that the level is not at its latest revision, so I sync it, but when I open it, I don't see the new meshes (I need to press the "Get Latest" button on P4V). So If I just sync the level without "Get Latest", I'm able to check out this level an erase all the changes my artist made.
How can I prevent that?

cyan jay
bright kelp
#

Do I need to sync the entire project every time my artist change the level ?

cyan jay
bright kelp
teal bone
cyan jay
bright kelp
buoyant sierra
#

is it possible to "clone" an svn project from a remote URL in unreal directly without a svn client?

limpid obsidian
jolly fog
teal bone
#

It's an ai that responds to text based prompts.

jolly fog
#

Oh

#

Sounds like something lazy people would use instead of either knowing or doing thier own research.

teal bone
#

Basically.

#

Lots of people seem to use it to be like, "how do I code this?"

#

And expect it to give good advice.

#

Or even actual source code (it does this)

#

Not that it will always compile or work as intended. If ever.

jolly fog
#

Mmm, reliable automated system, without human oversite and correction? Sounds dubious at best

haughty wedge
# limpid obsidian if you have to checkout the whole folder, you're probably doing something wrong....

yeah actually on sleeping on it, the whole folder does not need to be checked out. Only two things need to be enforced by the coding dept:

  1. The p4 server typemap needs to treat the .git folder as always writable
  2. Only coders who have git installed should edit code, but it would be okay for other people to make quick changes without git. The .git folder would in that case track the difference between the tracked repo state and those ad-hoc changes made in p4 only.

all in all I think this will work with exactly a stock p4 workflow. There is just a bit of added work for added benefit on the part of coders. It would be as easy as deleting .git folder to scrap all use of git and continue on with p4 alone

hollow bluff
#

hi, has anyone ever received this error on perforce? the person i'm deving with gets this error after getting the latest changes to code i submitted.

cyan jay
hollow bluff
mighty light
#

does anyone have experience migrating perforce to another server? we are trying to migrate from ec2 to a self hosted docker container. i moved over everything from the ec2 root and broke out the journal and depots since they have different folders in docker. i also tried keeping everything in the root (like it was from ec2) but it still doesnt start. docker logs reports this p4dctl error: Configuration for 'master' p4d is missing required parameter P4PORT. Started 0 services.

#

the container worked perfectly fine before we attempted the migration and the master.conf file was not touched

merry verge
#

I've moved p4d before, didn't have any issues once everything was configured

#

verify the value of P4PORT in your config file.

#

if you had it bound to a specific IP on the old VM make sure you've updated it to the new one.

mighty light
cyan jay
mighty light
#

hmm i see a checkpoint file, i hope its recent

#

i can see on the perforce site that it says Be absolutely sure you are erasing new db.* files and not production db.* files., how do i know which is which?

hollow bluff
cyan jay
#

@mighty light I don't think you can reliably move a p4 instance by copying the metadata (db.) files directly. There should be no db.* files present , so move them to a temp location first. then try and restore from whatever checkpoint and journal file you have.

woven sluice
#

Dang I vanish for one day and there's like three epic length novels about determining the best way to design the worst vcs setup ever wtf

cyan jay
#

Is that really a convo you want to be part of? ๐Ÿ˜„

woven sluice
#

I live for these memes... Stupid dishwasher had to die...

haughty wedge
#

.git repo inside my p4 depot is working splendidly so far. Just set the entire contents of the /Source dir as always writable, including the /.git dir

#

+w //.../Source/...

haughty wedge
#

default workspace settings prevent overwriting the files accidentally. noclobber!

quaint obsidian
woven sluice
woven sluice
#

I think the only time I've ever used the command line was when setting up ci lol

iron kernel
#

Hey, so I've setup a perforce server and added a project. The project is using the architect starting assets. However, it looks like the project wants to import the starting content everytime the project starts up, and because I've added these into perforce they are read only and I get an error. So, should I perhaps not add starting content to perforce? Edit: I found the reason, defaultgame.ini has an option to always load the startercontent. So, disabled this and all is well.

fair monolith
#

That being the case, then why force the extra work on them of checking out every single file before they can work on it?

#

It's messed up and completely backwards for a developer.

#

Locking only makes sense IMO for artists who cannot merge their work with other artists.

#

In a world where merging is possible, locking is nonsensical.

zenith leaf
#

I'm having a problem in which my plugins folder doesn't seem to properly push into my git repo. Would anyone happen to know why? Also, the plugins folder is still in the repo, but certain files just aren't there, such as the win64 folder in certain plugins. And this is for ue5.0.3

fair monolith
#

Probably your .gitignore is causing those to be ignored

#

(which would be correct for a Git repo)

#

You can store generated exes, but it will bloat your git repo like crazy, so it's generally not recommended to store them in Git.

woven sluice
fair monolith
#

You just don't want to ever reconcile?

woven sluice
#

Same for any other major auth tools

fair monolith
#

That seems like a required step whether you're checking files out or not.

woven sluice
#

reconciling is a safety catch you can do if you have any suspicion you might not have been checking things out

#

I do reconcile fairly often but it's not the everything

fair monolith
#

It's also a way to make sure that nothing else you've been doing has modified any files anywhere

#

Even if you've been perfect about checking out every single file

#

That doesn't mean there are no other modified files

woven sluice
#

Agree if you're doing large long multi-faceted work although it's still just a personal safety catch

merry verge
# fair monolith That doesn't mean there are no other modified files

And what would make those modifications? If you're only using perforce-aware tools then the possibility for this is quite slim.
And even if you do manage to forget something, it may get caught in code review if you do that, or in a verification build from a shelf. Or, at worst, you break the build and find the files later.

#

Running reconcile on your whole workspace is (unfortunately) untenable for large projects. But also not necessary.

fair monolith
#

My p4 project contains only my game source and reconcile runs in a couple of seconds. (Lyra project, ~ 10k files)

#

I know that Epic recommends keeping the engine and your project together in the same stream.

#

I'm guessing that has more to do with trying to make it easier on artists.

#

Epic does a lot of things that are insanely wrong from a dev perspective, for the benefit of artists.

zenith leaf
fair monolith
#

@merry verge I just ran reconcile on my Engine depot (almost 300k files), it took 22 seconds. Definitely not a fun way to spend 22 seconds, agreed. For the most part though I think very few people on my project will actually need to edit the engine, so they can just pull it down when updates are made, and work in the project-specific depot which reconciles in 1-2 seconds max.

merry verge
#

That assumes a fast perforce server.

#

Reconcile is not an offline operation.

fair monolith
#

Right.

merry verge
#

I've had a code-only project take 5-10 minutes to reconcile in bad circumstances.

fair monolith
#

Well I guess if/when it gets to the point that I have enough people on the project that the P4 server is slowing down then this will be an issue.

merry verge
#

Yes. And it's why reconcile is primarily a safety mechanism. I wish perforce would fix its slowness but we're stuck with it for now.

fair monolith
#

Previously I tried using Epic's typemaps from the UDN P4 but they don't seem to actually work for a working repository.

#

Their UDN typemaps seem to work fine for them pushing updates out, but as soon as I try to check their stuff into my own depot using the same typemap, there are tons of permissions problems etc.

#

Setting +w on all text files fixed it.

#

I guess I could do some more research and rather than +w all text files, only +w the files that actually get changed during build, but those are spread out everywhere and different per plugin, platform, etc.

#

It's a crazy mess.

#

There are even tons of source files that get modified during build... ๐Ÿคฃ

woven sluice
#

Source files modified during build, what?

#

Are you version controlling temp files?

#

Setting +w on all files is an instant red flag that you've screwed up somewhere

#

It breaks everything

#

I should admit I don't have a source build in perforce so maybe I'm ignorant of some common known thing

ashen plaza
#

is there a way I can gitignore all files that contain BuildData?

#

or whatever it's called

woven sluice
haughty wedge
merry verge
#

It can be done on specific folders.

haughty wedge
#

so what is the problem then?

merry verge
#

When you are working with a massive set of projects in a single depot with lots of changes across them it doesn't matter.

haughty wedge
#

is it still slow to do just the source folder when the project becomes huge?

merry verge
#

Reconcile must hash every relevant file and request the hash of every file from the perforce server.

haughty wedge
#

but for just the source folder this seems entirely reasonable

merry verge
#

It's not when you have a massive project.

haughty wedge
#

how massive are we talking?

#

because source is text it's never going to be unmanageable like binary assets

merry verge
#

It's not about file size as much as file count.

haughty wedge
#

I'm using the lyra sample project as a test

merry verge
#

It's also completely and utterly unnecessary if you're using tools that are perforce-aware. It's only when you screw things up that it should be necessary.

#

Lyra is not a big project.

haughty wedge
#

sure

#

VS can be perforce aware

#

but I want it to be git aware, because git is a tool for coders

#

p4 is not really good at working wit hcode

#

and when you want to do lots of branches and try things out, I can't see p4 being good for that

merry verge
#

It's perfectly fine and while git is better you're immediately jumping to wacky workflows without even seeing what a normal one would look like.

haughty wedge
#

it's not wacky at all!

merry verge
#

Except it is

haughty wedge
#

because we use the reconcile feature on just the source folder?

merry verge
#

Why would you want to add additional hoops to jump through to submit code

haughty wedge
#

Lyra source is 1,037 files and 287 folders

#

reconciles fine

merry verge
#

That's not a big project.

#

And you're likely on an underutilized perforce server.

haughty wedge
#

there are not really any additional hoops to jump thgouth

fair monolith
haughty wedge
#

ok but it's not like I'm trying with 4 files in 2 folders lol

merry verge
#

Ok, but my responses about reconcile have nothing to do with a project of that size

haughty wedge
#

let me drop in some huge amount of source files brb

merry verge
#

And you're likely on an underutilized perforce server.

#

I'm talking about AAA.

#

Not someone's pet project.

haughty wedge
#

I'm not suggesting this as a AAA workflow lmao

fair monolith
#

I've been working with 300k+ files in engine projects. At that size with a perfectly responsive P4 server it's still annoying.

haughty wedge
#

they have helix4git and all sorts of fancy things that IT can set up

merry verge
fair monolith
#

It's not show-stopper annoying, but it's annoying.

merry verge
#

I was responding to Xist and you've taken it to mean something about your git setup.

fair monolith
#

With a slow P4 server I understand it could get to show-stopper status.

merry verge
#

It's not a show stopper by any means (well, a slow enough server would make it so) but it's not something you want in a normal workflow for a AAA-sized depot.

#

It's a tool, just not one that should be used regularly if you can help it.

fair monolith
merry verge
#

Obviously there are situations that require it.

merry verge
fair monolith
#

I'll keep working at it.

merry verge
#

The build process modifying checked-in files is definitely odd though

#

Sounds like some stuff is checked in that shouldn't be

fair monolith
#

Yeah it seems like there are 100s of projects all following different rules that all got merged together.

haughty wedge
#

An easy way to avoid having to reconcile would be to have some scripts set up with p4vs. When a file is autochecked out, also check out the .git folder. Then, the coders just have to use git in the command line or outside of visual studio which is slightly annoying but probably less annoying that reconcile times in the hours

#

or tell the coders to take the one extra step of checking out .git themselves

merry verge
#

or learn to use perforce the way it is intended before trying to shoehorn in other workflows

haughty wedge
#

I love how your only solution is for coders to abandon the tool they rely on most

merry verge
#

lightweight branching exists in perforce

haughty wedge
#

like do you have any idea what suggesting that is like to a coder?

merry verge
#

I am a "coder"

haughty wedge
#

especially if you're asking them to volunteer their time?

#

a "coder" ok

#

what about a git user lmao

merry verge
#

I've used git for quite a long time too.

#

My annoyance comes from you being unwilling to learn the basics of a tool before trying to pass judgement on it.

haughty wedge
#

I've learned the basics

#

๐Ÿ˜

merry verge
#

apparently not

haughty wedge
#

see you just have this weird attitude

merry verge
#

I don't think perforce is the be-all and end-all of source control. I prefer git workflows for pure-code stuff myself.

haughty wedge
#

you're stuck in "I do it this way no other way"

#

so weird

#

when is the time to experiment with workflows?

#

after you start a projectr?

#

LMAO

merry verge
#

You haven't even tried ones that exist though

haughty wedge
#

what do you mean>

#

I have a p4 server

#

I'm trying everything now on a test depot

merry verge
#

And what's the problem with that such that you want to use git for code?

haughty wedge
#

I've said it so many times

#

to use github

#

to publish code easily there

merry verge
#

And what's the problem with the solution perforce themselves provide?

haughty wedge
#

to allow ppl who use git to use it

#

and to more easily manage code branches in p4 lol

#

they have no solution to github

#

teamhub is like not free and for private teams right?

merry verge
#

Have you already looked at helix4git?

haughty wedge
#

yes I have

merry verge
#

Like I've mentioned multiple times?

haughty wedge
#

the problem with helix4git is you now have a bunch of irreverisble shit on your p4 server

merry verge
haughty wedge
#

and then you really are just mirroring shit

haughty wedge
#

๐Ÿคฃ

merry verge
#

Not many people use them with games because keeping code and content in sync tends to be more important than lightweight branching.

haughty wedge
#

yes exactly

#

that is EXACTLY the point

#

of using git OUTSIDE of p4

#

but track it with p4 too

#

so that the branching doesn't mess with p4

merry verge
#

You have the exact same problem though

#

it's not solving it

haughty wedge
#

it solves it

#

100%

merry verge
#

If you're only modifying code in a task branch it's the same as only modifying code in git

haughty wedge
#

ok sure but then you can't use git or github

#

๐Ÿซฃ

merry verge
#

"can't use git" isn't a problem if everyone on your team is already using perforce
and you haven't described what the problem with "mirroring" things to github is.

haughty wedge
#

so you can only attract talent that already knows p4?

#

sound sinsane

#

very very insane

merry verge
#

Wanting talent that's unwilling to learn a new tool seems worse.

haughty wedge
#

wanting to onboard ppl quickly, and also have outside contribution in the form of open source is not insane

merry verge
#

Again, I've already mentioned a solution to github but you haven't actually said what the problem with my solution is.

haughty wedge
#

there is a reason that Perforce the company is the only ppl who suggest moving from git to p4 is a good idea. Most ppl think the other way. (for code)

haughty wedge
merry verge
#

again, helix4git

#

you haven't said why this "mirroring" is a problem

haughty wedge
#

I told you the huge problem with that

merry verge
#

no, you didn't

haughty wedge
#

the problem is that it's a mssively custom configuration of the p4 server

#

it's not a common setup

merry verge
#

how is it massively custom

haughty wedge
#

and then the two are kind of inseparable

#

massively custom because you have to have a graph stream

#

i mean i guess it's supported obviously

merry verge
#

...and?

haughty wedge
#

it would be a lot of extra work

#

you're telling me what I'm doing is extra work

#

it's not

#

what you're suggesting is!

#

LOL

merry verge
#

What extra work is there for this

haughty wedge
#

setting up helix4git

#

managing it when it goes wrong?

merry verge
#

making a new stream is not extra work. It's akin to making a new branch.

haughty wedge
#

the scripts firing between the twoi lol

#

helix4git is not meant for using ONLY git

merry verge
#

You need to be doing that to push changes from p4 to github and vice versa in your setup anyway

haughty wedge
#

it's meant for using git AND p4 for code

#

like say one team uses p4 and won't change

merry verge
#

Virtual streams and workspace views allow mixing stream types.

haughty wedge
#

the other team uses git and won't change

#

that's when you want helix4git

#

but if the whole code team just uses git

#

then no need for helix4git

merry verge
#

But that's no different from either not having code in perforce in the first place, or by having a virtual stream map the graph depot into a local workspace for you.

haughty wedge
#

lol "its not different"

#

you're suggesting extra steps

#

not me

#

my setup is setting up p4 exactly as epic tells you to

#

with ONE addition to a typemap file

#

that's ti!!

merry verge
#

Except it isn't, because it doesn't magically push to github for you.

#

Or pull changes from there.

haughty wedge
#

LOOLLLL

#

how can you possibly manage coding in a complex project if you're sooo worried about pushing to git?

#

you don't need to push to git

#

that's the beauty of this idea

#

you can just push to p4 and whatever you push is in p4

merry verge
#

You're the one who said you cared about having everything on github.

haughty wedge
#

and the .git folder will tell you how different that is to the real git repo

#

yes

#

everything can be on github too

merry verge
#

So something must be pushing the data from perforce to github.

haughty wedge
#

lollll how is this hard to understand!?!?

#

nothing is coming from perforce to GH

merry verge
#

No, tell me - how are you going from the git repo in perforce to github.

haughty wedge
#

it's coming from the workspace

merry verge
#

So someone is pushing to github themselves when they commit

haughty wedge
#

yes

merry verge
#

and submitting to perforce

haughty wedge
#

how is that hard!/

#

OMFG

#

NO HOW COUDL THEY MANAGE THEAT!?

#

tha'ts too much work for someone who manages complex code

merry verge
#

then how is the git repo getting updated in perforce

haughty wedge
#

it doesn't

#

you only submit what you want to submit

#

the git repo is like the code team's internal tracking of the codebase

#

p4 is the "official" tracking of the whole project

merry verge
#

I'm not asking about that

#

I'm asking the workflow

#

if I push a change to github

haughty wedge
#

sure

#

yes

merry verge
#

what is changing things in perforce

#

am I submitting separately

haughty wedge
#

the user when they submit the changelist

#

yes

merry verge
#

Ok, so you need to push to github and then also submit to perforce

haughty wedge
#

it's two operations

#

if you want

#

you don't have to push to github tho

#

like for testing

#

you know?

merry verge
#

I'm not asking about that, I'm asking about submitting code to both repositories.

vale basin
#

sounds very error prone and easy to get the 2 out of sync....

haughty wedge
#

the two are not meant to be "in sync"

merry verge
#

It's an extra step. No, it's not too complicated if you know what you're doing but it's easy to forget one side or the other.

#

Versus one step - simply pushing to a helix4git repo.

#

Which is automatically mapped with built in tools to everyone's perforce workspace.

#

There's no scripts there.

haughty wedge
#

helix4git only supports 3 git repos

#

fore fre users

#

that is

haughty wedge
merry verge
#

Not for what I just described.

haughty wedge
#

I read the docs last night lemme check again

merry verge
#

From my understanding a single workspace can contain a view that references both a graph and normal stream depot

#

The graph part of the view will be read-only on the perforce side of things, but that doesn't matter since you're only using git to push changes to it.

#
//MyProjectCode/main/... C:/MyProject/Source/...
//MyProjectData/main/... C:/MyProject/...

I don't know the specific path syntax around graph depots but I'm assuming you can do something like this

#

You certainly can for every other type of depot in perforce.

#

This isn't some weird script running

haughty wedge
#

I will test that out at some point but from what I see, there is little benefit to "tying the two together" like that

#

keep in mind, my point of view is a small indie team

#

working on possibly open source code

#

enterprise studios can afford to just get perforce support to take care of it

merry verge
#

The benefit is you cut out a step that doesn't need to exist.
I agree with the cost issue - though that's an unfortunate reality of perforce in general and it might be worth looking elsewhere if that's going to be a sticking point.

haughty wedge
#

I now have 360,000 source files in 20,000+ directories

#

lemme test reconcile

merry verge
#

Again, it's about slowness of the target server as well

merry verge
#

At AAA scale it's a problem

haughty wedge
#

I want to be able to say "you know what, let's just go p4!"

#

if we have helix4git integarated, that's a headache

merry verge
#

This is simple though. It's a built in feature.

haughty wedge
#

if we just tracked our .git folders, we just stop tracking them and now we're only using p4

#

it adds complexity to the p4 server itself

merry verge
#

Not any more than managing the perforce server in the first place.

#

You clone from git the same way you've always done, it's just that the origin happens to be a perforce server.

#

Administering the perforce server doesn't change, it's there either way.

#

The only extra work here is adding a virtual stream so that people don't have to configure the workspace mapping themselves. And that's a few lines in a text file (basically what I posted earlier)

#

virtual stream mappings is a pretty common thing to do regardless

haughty wedge
#

you can't say for sure that admining the p4 server doesn't become more complex

merry verge
#

You can't say for sure it does

haughty wedge
#

it must get more complex

merry verge
#

Why?

#

It's just another depot

haughty wedge
#

it is more complex

merry verge
#

same as the first one

#

I have tons of depots on my personal perforce server, I've never had a problem with a specific depot that wasn't an issue with the server itself.

haughty wedge
#

it's not just another depot

merry verge
#

There's complexity in administering perforce itself. Not in administering lots of depots.

haughty wedge
#

it's coordinating between tools that will be updated

#

bugs happen, things break

woven sluice
#

"I don't want to have to make new git users learn perforce, I want to make them learn perforce and learn how to deal with this custom abomination system I made that nobody else in the world does"

haughty wedge
#

the more complexity added, the more likelihood of increased admin requirements

#

wow

#

you guys are so nice

#

thanks so much

merry verge
#

My dude, your attitude hasn't been any better.

haughty wedge
#

right

#

despite the fact that many ppl are looking to use git instead of p4 for code

#

you're insulting me

woven sluice
#

"I've been learning perforce for like three days, I'm an expert"

#

Yes I am

#

Because you need to hear it

haughty wedge
#

bye

merry verge
#

I'm not going to defend HoJo over what he's saying, but you've been about as sarcastic to me as he's being to you.

#

I haven't insulted you once.

#

I've questioned why you're doing this.

#

If you don't want to engage about it then... don't bring it up?

woven sluice
#

It's not great to keep switching back and forth between arguments.. One day it's "I'm doing this because I want to share the code automatically on github" and the next day it's "I'm doing this because I want to onboard git users faster" and the next day it's something else and each reason has other better solutions...

merry verge
#

In the end I feel like most of this is coming from someone who hasn't spent some time to actually learn perforce's featureset. Knowing how to setup a server is one thing, but understanding the features beyond what you see at a glance is another. That's not exclusive to perforce, that's true of any complex piece of software.
Not knowing about some core features of perforce (mapping depots into workspaces, for one) is a sign that you have not done enough with it yet to be passing judgement. And yet you want to act superior to everyone else. At a minimum you've implied that I have no experience in git or software engineering and sarcastically insulted my knowledge because I was trying to clarify the workflow you were describing.

woven sluice
#

Sorry siliex feels like I scared them off or maybe ๐ŸงŠ awkward HideThePain

merry verge
#

They apparently don't want to engage on alternatives to what they want to do so it doesn't really matter.

fair monolith
#

FYI I've stashed my previous work on +w to all text files.

#

Going to try to limit the +w to only build- or automation-related files.

#

It will just require some trial and error since there doesn't seem to be any publicly available documentation to that end.

merry verge
#

Would be interesting to see what files exactly are causing the issue

#

is this an engine from github or from epic's perforce?

fair monolith
#

Off the top of my head, log files, json, xml

#

In various binaries/build/source dirs

merry verge
#

Yeah that sounds like stuff that shouldn't be checked in at all

fair monolith
#

It's from Epic's UDN P4

#

I tried copying their typemap but it doesn't allow me to do anything but mirror their code. I can't import and then work with the files given their typemap.

vale basin
merry verge
#

Was just about to mention that ๐Ÿ™‚

#

well, you can use p4 edit ... -t auto to update everything

fair monolith
vale basin
#

I can imagine

merry verge
# vale basin TIL

idk when that option was added but I used to be under the same impression as you until a year ago. Updating the typemap used to be horrible.

#

Now if only that option existed in p4v

vale basin
#

Yeah, i'm no expert on P4 and have a few bad habits/workflows that stem from UE3 days when some of the integrations were a lot worse

#

so theres lots i learn from browsing this chat

fair monolith
#

I'm brand new to P4. I keep trying to fit it into Git-sized holes.

#

Sometimes it works better than others.

#

๐Ÿ˜„

vale basin
#

Yup, it's a whole different beast eh

woven sluice
fair monolith
#

It seems +w is only really bad when you have overloaded P4 servers.

#

In my case it worked great. It made P4 act much more like Git.

#

But I can see where if you have a bunch of people on a single P4 server and they're all sucking bandwidth, it could take a real long time and be a pain.

#

Ultimately I'm still trying to learn the best way to work with P4 since conceptually it's quite different than Git.

merry verge
#

Can't force people to lock assets if they can write them all the time

fair monolith
#

Right, I was only doing +w on text (mergeable) files.

woven sluice
#

It completely breaks your workflow down into something horrible, even on text

merry verge
#

+w is fine for code I guess. Personally I'd say it's best to get used to checking out files (esp. since most relevant tools have some degree of perforce support).

woven sluice
#

In git, git itself finds the modified files. In perforce, your tools "find" the modified files (by telling the server as you're working on them). +w workflow is farther from git

#

Figure out if you have temp build files in your source control and remove them rather than +w them

merry verge
#

From a workflow perspective +w is kind of closer... reconcile would be akin to git add, submit is akin to git push. I'd start by trying to work the "perforce way" though.
And yeah, the main thing here is to figure out why files that shouldn't be in source control at all are there in the first place.

woven sluice
#

And don't +w anything else until you're fairly experienced with p4

merry verge
#

Sounds like this might be a case of having built the engine, then submitting everything. Would be better to get a fresh copy of engine source, submit that, then build.

fair monolith
#

I did a p4 clean on my UDN stream

#

I'm committing that with zero changes as a mainline stream

#

Then I'll make a dev stream off that and try to see if I can actually work in it

woven sluice
#

Just so you know, release and dev streams make a whole copy of the files on the server... Yeah, it's disgusting x 1000... I think task streams don't?

merry verge
#

Ye

#

task streams are the lightweight ones

#

but task streams are meant for small bits of work, not long term development

fair monolith
#

I have read-only access to UDN, so I have to commit this to my own local P4 server, which I think requires making it a mainline stream locally. Is that not correct?

#

Basically I'm mirroring the UDN stream into my local depot.

fair monolith
woven sluice
#

remembering the time our server had a 50 gb drive and I tried making a dev stream of our 30 gb project HideThePain

merry verge
#

cherry pick?

#

or apparently like 20 other ways as is traditional with git

fair monolith
#

Cherry pick. That's a good reason to keep the commits small and targeted, so it's a lot easier to cherry pick only changes you want rather than multiple things squished together in a single commit.

fair monolith
#

So after trying multiple times to import 759k items from UDN //UE5/Release-5.1 and having p4 freeze up in the middle somewhere, I broke that changelist up into 30k file chunks and am now successfully able to submit them incrementally.

past hatch
#

Hi folks,
Does anyone have any experience with Assembla.
Is there other companies servicing Perforce cloud solution? I am looking for a scalable turnkey solution.

fair monolith
#

I think I finally figured out the appropriate Typemap & .p4ignore for a UDN mirror without having to -w stuff.

#

Thanks for your help everyone. ๐Ÿ‘

mighty light
#

Very nice. I'll probably use this every time I forget what type map I need to use

cyan jay
north canyon
#

im having trouble with perforce, and have always had trouble with it when first starting a server, whenever i launch the helix core server exe file, the application launches as a white window then closes after a second or two, i managed to fix the issue in the past but I cannot remember how i fixed it, and my notes on perforce only give me tips after the server is installed, any help would be greatly appreciated!

past hatch
wheat axle
#

Hi, I have a problem with subversion.
We've updated our project (connected to an SVN) to 5.1 and now every time we are opening the project, Starter Content gets loaded into the project during startup and every file from it gets "Checking file(s) source control status"-ed and it prolongs loading times drastically and makes commiting changes much more annoying because every time we have to revert Starter Content Stuff, and every time we want to commit something, we have to either revert starter content or manually pick what we want to commit from hundreds of files. Adding StarterContent to ignore list doesn't fix the issue. Does anyone have any clue what to do?

#
fading trench
#

Does anyone know any decent online equivalents to GitHub/GitLab that I can use for an Unreal project? I want to use SVN as opposed to Git, as Git is giving me issues with commits (HTTP buffer not large enough etc.) and one of my friends who wants to help is a non-programmer and only familiar with SVN.

Currently I'm looking at either putting some of my old computer parts to use and building a physical server here at home. I'd rather use an online service though, looks like I may need to rent a server?

#

My professional life has always used servers within the company, and personal projects have always just been pushed up to GitLab. So I'm a bit stumped when it comes to Tortoise SVN.

quaint obsidian
#

also were you using LFS?

#

I'm not aware of any online SVN hosts for free like gh/gl

fading trench
#

LFS yes, but I've not switched the HTTP version, that's interesting! I'll give that a go and see if it fixes the git side of things, might just have to rent/build a server going forward though, thanks.

fair monolith
#

Don't need to use HTTP/s

#

PSA for Perforce users:

After days of P4 trial by fire, I've learned something very important for the typemap that doesn't seem to be documented anywhere...

ORDER of typemap must be from least-specific to most-specific.

Example (DOES NOT WORK):

text+w //.../Binaries/....json
text //....json

The above would seem to suggest that all .json files are text, except for those inside a Binaries folder. However this DOES NOT WORK.

Apparently the //....json version at the end completely nullifies everything that has come before it!

The correct way: (this works as expected)

text //....json
text+w //.../Binaries/....json

You have to put the least specific variant first, and THEN put the specific variant afterwards.

fair monolith
#

I'll update my dev notes with this info but wanted to post it here too in case it helps anyone.

zenith leaf
#

Does anyone have any suggestions on how to work with git? Specifically, how to avoid merge conflicts when working with the same map

fair monolith
#

The only way to work with binary assets is to ensure that only 1 person changes them at a time.

#

There can only ever be 1 version of a binary file. There cannot be multiples that you merge together.

#

Thus with Git or with anything else, you have to decide which version of the binary file you want to keep. Keep that one and discard the other.

quaint obsidian
quaint obsidian
#

use OFPA and world partition 5.0/5.1 to reduce the amount of contention/breakage with parallel map work

#

if you're on 4.27, you can split levels into sub levels by discipline and area, even if you're not using level streaming

fair monolith
buoyant basin
#

how you guys deploy you multiplayer project during for tester, I mean I need a way to sync the binary build simply something like Steam
instead of Uploading and Downloading every time

mighty light
hollow bluff
#

hi, anyone ever run into this problem?

mighty light
hollow bluff
#

ok thnx

drifting mason
#

I was pulling content to Unreal with Github, but it wouldn't let me until I exited Unreal. Why is that?

mighty light
#

im assuming by pulling content to Unreal with Github you mean you are pulling changes from somewhere to your local working directory. if so, the problem is likely that you are pulling binaries that are in use (eg editor binaries). these binaries typically shouldnt be submitted to source control unless you are using something like UGS, in which case they are usually submitted to a separate repo

drifting mason
#

What do you mean by binary?

mighty light
#

typically .dll and .exe files

drifting mason
#

Oh alright. Thanks!

loud tide
#

how can i change my default git username?

storm sleet
#

In Unreal 5.1 with plastic there are these new changelist features. I noticed that (1) changelist don't contain deleted folders, (2) submitting those changelists doesn't work if I removed assets within a folder that I also deleted, and (3) using the older submit content window I can't select which changes I want to submit anymore (I can only submit all changes).

vague whale
#

hello, I am wondering if my local engine code is corrupt, in SceneComponent.cpp line 2606 has an empty function to get sockets QuerySupportedSockets is missing code from what i can tell

cyan jay
vague whale
cyan jay
#

search the codebase for ::QuerySupportedSockets and see for yourself ๐Ÿ™‚

haughty wedge
celest kayak
#

I've been trying to get info on Perforce licensing for education. A few lost emails and a few "I can't help you but I'll try to find who can". This is the first time in the Unreal ecosystem that I've worked with anyone who wasn't completely helpful and attentive. I'm a bit surprised.

haughty wedge
#

I have a question about p4 tho. I'm testing perforce server backup and recovery procedures today. The docs say that the checkpoint file must be as old or older than the versioned files. It says the versioned files must be backed up after the checkpoint is created. But, if the versioned files haven't been altered since the checkpoint creation, won't they be as old as they were in their modified date? Or does it only look at the date the file was copied? Is that reliably set in the filesystem?????????

iron bronze
haughty wedge
#

Not worried, I'm testing this on a fake test server with unimportant data. Just curious as to how we ensure the versioned files are all somehow newer than the checkpoint?

iron bronze
haughty wedge
#

why??

#

lol like why does perforce scare us with their messaging?

iron bronze
#

It will restore anyway ๐Ÿ™‚

#

I dont know lol

#

Better safe than sorry I suppose

haughty wedge
#

Yeah I guess it just means (duh!) that you bette have a recent backup of the versioned files or else your checkpoint is useless lol

hollow bluff
#

do all perforce users need to set up p4 typemap? or just one?

haughty wedge
hollow bluff
#

ok thnx! .p4ignore is per workspace.

hollow bluff
#

how do u rotate unstructured logs in perforce?

limpid obsidian
#

hey all, I did a thing: https://oakenfold.gumroad.com/l/tvror

#

^ local server setup. hosting a server on AWS or Digital Ocean is beyond the scope of the book but if enough people are interested, I can add it

tardy parrot
#

Please doooo it, thereโ€™s plenty of interest in setting up hosted perforce servers and lack of step by steps!!

mighty light
#

There is actually quite a few guides about how to set up perforce servers. Not sure where you have been looking

#

Or haven't been I guess

hollow bluff
#

@limpid obsidian @tardy parrot ^^^ this source goes step by step. it was suggested in one of Epic's youtube videos. all i ever need is part 1 of the blog. i think the others have to do with extra steps for source build of the engine.

cyan jay
hollow bluff
cyan jay
hollow bluff
cyan jay
#

Server Administration Guide I linked above. The official docs basically.

hollow bluff
#

Ah ok. Iโ€™ll take a looksies. Thnx.

iron bronze
#

Yeah the main issue with Allard's guide is they don't leverage apt repository, so it makes updating perforce troublesome

sleek blade
#

Hi!
What's the best Versioning tool for UE4? Excluding SVN, since it breaks too often and fucks up so even Clean-up doesn't work?

limpid obsidian
limpid obsidian
fair monolith
sleek blade
#

Small Team, Just me ๐Ÿ˜„

fair monolith
sleek blade
#

ok. Thank you ๐Ÿ™‚

tardy parrot
haughty wedge
cyan jay
vague whale
#

Hi, I am using perforce for game development, but I want to development a plugin, I used to have submodules in git, is it possible to do something similar with perforce?

limpid obsidian
#

@haughty wedge linux is cheaper and easier to maintain. lots of command line utils, bash, etc

west lotus
#

morning all, i know ive been spaming this a bit lately but im getting pretty desperate, got 4 people available to work on a project but cant find the info i we need anywhere

#

Hey guys, Iโ€™m looking to setup a Unreal UGS server for game sync on ubuntu or some form of Linux distro based server. The idea here is to host a public UGS server so people can check in and out like a SVN setup to work on one project. I have looked over the Windows setup and created a test server which works ok, but I am struggling to find any documentation on how I would go about setting up a public server host so client can access the Unreal project remotely on a VPS under a Linux install. Any guidance would be great

lethal cedar
#

Why does the Starter Content keep showing up on the list when I submit content, despite not touching any of it? Is that a normal thing?

cyan jay
#

I saw UGS and assumed you implied perforce, but now I think you're not sure what solution. UGS is Epic build distribution tool that requires perforce. Perforce is the source control method like SVN, so a prerequisite of setting up UGS is to host your project on perforce. Perforce is free for upto 5 users.

west lotus
#

so we have now got an Oracle linux server for webhosting, but was hoping there would be some way to host UE5 on the oracle server and we both log into it as and when, so all changes are saved to the Oracle server

cyan jay
#

Yeah that's not really a good workflow. Sorry you have some learning ahead of you!

Essentially you need a single source of truth for the project. E.g. a source control server.

You both have copies of the project on your local machines, and when you make a change you upload the changes to the server, and your colleague downloads the latest from the server, etc.

west lotus
cyan jay
west lotus
#

Does it support ARM Ampere? โ€“ was thinking 4 cores 8 GB 500GB ram and a public IP?

Thinking on using the oracle cloud free tier for starters

cyan jay
cyan jay
west lotus
#

cheers, i was looking but i couldnt find anything that specified more than a CPU with AES supp. thanks

chrome needle
#

hi guys in new to source control and i was about to commit to my repo and bam i get this error

fair monolith
#

You can git add --all to add all files in the directory.

#

then you need to git commit -m "Your commit message here"

#

Definitely read up on Git, and look into getting a GUI tool for it.

#

GitKraken is good, for example.

fair monolith
#

FYI for anyone interested in Perforce, I created 2 example .p4ignore to help get you started.

#

My example .p4ignore is for a C++ source-only UE5 project depot. (Similar to what you would set up in Git; all generated binaries are ignored).

#

My example engine.p4ignore is for a custom UE5 Engine source depot.

#

Both require the shared typemap, also listed there.

runic summit
#

I installed discord on a new client and all the popup messages just came up normally I just disable them immediately but I saw you helping someone with perforce setup

You sir, are an angel, thank you for helping others.

That is all.

#

Seriously anyone who helps others setting up perforce is a good soul

quaint galleon
#

How are we diffing our blueprints @ a code review level is this a thing? I'm used to working on 100% text based code files...

vale basin
#

Or there's a diff commandlet you can setup, but I haven't used it

fair monolith
#

To support artists and non-dev game designers, you need to be inside the editor, where if you have it connected to source control (either P4 or Git), you can diff an asset with a previous version from source control.

#

This gives you a visual (minimally functional) way to see what has changed from your chosen previous version to the one you now have loaded up in the editor.

pale forge
#

has anyone gotten this error when trying to start UE5 new project for the first time?
I Installed all the SDK's and .Nets from VS Installer for 2019 as well.

#

Running D:/Program Files/Epic Games/UE_5.1/Engine/Build/BatchFiles/Build.bat -projectfiles -project="D:/Users/Franky/Documents/Unreal Projects/WhatEverHappened/WhatEverHappened.uproject" -game -rocket -progress Running UnrealBuildTool: dotnet "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" -projectfiles -project="D:/Users/Franky/Documents/Unreal Projects/WhatEverHappened/WhatEverHappened.uproject" -game -rocket -progress Log file: C:\Users\Franky\AppData\Local\UnrealBuildTool\Log_GPF.txt Discovering modules, targets and source code for project... Binding IntelliSense data... Binding IntelliSense data... 100% Writing project files... Writing project files... 0%

#

Unhandled exception: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Text.StringBuilder.ToString()
at UnrealBuildTool.VCProjectFile.WriteProjectFile(List1 InPlatforms, List1 InConfigurations, PlatformProjectGeneratorCollection PlatformProjectGenerators, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\VisualStudio\VCProject.cs:line 1381
at UnrealBuildTool.ProjectFileGenerator.WriteProjectFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\ProjectFileGenerator.cs:line 2812
at UnrealBuildTool.VCProjectFileGenerator.WriteProjectFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\VisualStudio\VCProjectFileGenerator.cs:line 480
at UnrealBuildTool.ProjectFileGenerator.GenerateProjectFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, String[] Arguments, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\ProjectFiles\ProjectFileGenerator.cs:line 1176
at UnrealBuildTool.GenerateProjectFilesMode.Execute(CommandLineArguments Arguments, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\GenerateProjectFilesMode.cs:line 233
at UnrealBuildTool.UnrealBuildTool.Main(String[] ArgumentsArray) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:line 648

vale basin
#

sounds like you are running low on memory. Open task manager, make sure there is plenty of memory available. Close any programs that are not required, etc

#

Also being that this is a compiling/project generation problem, might be best to ask in #cpp

pale forge
#

32GB RAM nothing opened I'll check with cpp thanks ๐Ÿ˜„

vague whale
#

hello, i just reinstalled windows and lost my perforce workspace setup on the local machine, is it possible add the directory back as a workspace?

#

or do i have to check everything out again?

cyan jay
vague whale
cyan jay
#

in p4v open the Workspaces tab and you should see all workspaces known by the server. Find your old workspace, open it and edit it, then change the Host field in the Advanced tab

vague whale
#

seems like nothing

cyan jay
#

open > Filter bit and clear it

vague whale
#

aha!!!

#

do i need to rename my computer?

cyan jay
#

in p4v open the Workspaces tab and you should see all workspaces known by the server. Find your old workspace, open it and edit it, then change the Host field in the Advanced tab

#

or rename your machine - whatever you find easier ๐Ÿ™‚

vague whale
#

it told me the computer name didn't match ๐Ÿ™‚ renaming the computer is easier i liked its name

woven sluice
vague whale
#

I do have all the files I am the only user

#

I've just gone back to win10 as I kept getting weird errors on 11

lucid stream
#

your hostname probably changed if all you did was downgrade but left the workspace drive alone.

vague whale
#

All working nicely now

#

However the nasty hard crash is because of dx12, no issues on 11

outer cipher
#

for some reason my project using perforce is super slow compared to a copy not in my p4v workspace on ue5

#

i didnt have this issue on ue4 in other machines. not sure whats going on

#

like super slow loading maps, (or the project even) then jumping into game or out of game

quasi blade
#

GitHub vs Azure DevOps for a Unreal Engine project (with LFS) Iโ€™ve noticed that GitHub only has 1Gb LFS for free per month while Azure DevOps seems to have way more

#

Which should i choose?

frozen bronze
quasi blade
#

250gb for lfs for free

#

Per repository

frozen bronze
storm hamlet
#

is there a problem with apps like git desktop or anchorpoint when you migrate content files from one project to another that is monitored? It seems the migrated files are not recognized, and the reason might be becasue the project is not open when it receives the files

viscid pendant
#

everytime i try to push my initial project files it abruptly disconnects. I tried it on 2 different machines in our office.
Our connection is fine, there is no problem with it.
The project is 8-something GB in size and the individual files dont exceed 30/40MB so it cant be an LFS issue.

its frustrating because i cant get my repo to be pushed.
Using Github Desktop.

Any ideas what i could try to make it happen?

storm hamlet
#

is there a list somewhere of files that we can safely add to gitignore?

#

should we add uproject file to gitignore?

#

because apaprently that is where some editor options are saved

viscid pendant
#

how would anybody who just frehsly downloaded your repo open the project if you've excluded the *.uproject file

storm hamlet
#

because it contains lines about disabled or enabled plugins, so the problems is that anyone receiving it will have his options editor changed

viscid pendant
#

as they should have.
you're developing a game with certain plugins, it wont run right if somebody else dont have them

storm hamlet
#

yes but some people have optional plugins that others don't want

#

and some other options, not ust plugins

viscid pendant
#

than maybe those PPL with extra plugins need to exclude the uproject file on their machine from uploading so it wont disturb others

storm hamlet
#

yes

viscid pendant
#

certainly possible

storm hamlet
#

it never changes other than editor options or optional stuff?

#

i mean it's 1k in my folder

viscid pendant
#

i mean, if you're working this way, if there are any mission critical changes to Settings sometime in the future, you need to have everybody turn them either on/off manually

storm hamlet
#

it's weird that some disabled plugin would be writtten in there

#

instead of editor.ini or something like that

viscid pendant
#

yeah, i dont know why some plugins are written in there
its a huge painas well if you want to sell something on the marketplace

storm hamlet
#

Is there a point in using gitdesktop and source control at the same time?

gray siren
#

Anyone know how to debug why P4 FStat and Edit would be constantly called for every asset in my Starter Content folder when launching the editor? All of them are getting changed for some reason and added to my CL in P4 on launch.

#

Think I'm finding an answer it's unpacking the StarterContent.upack and recopying it into the project everytime I start it up. Just recently updated the engine version to 5.1 wondering if that's what cause it to start doing this.

final escarp
#

Hey all, I am using Git with UE 5.1 and am looking for the "Check Out" option on files. According to the documentation you can right click an item in the Content Browser and do check out, but the option isn't in my right click menu at all. Any ideas, or am I missing something?

storm hamlet
#

@gray siren hey bro, yeah regarding the starter content i had the same issue, it's back after a restart even after deleting many elements inside it. I think there's a flag somewhere that brings it back.

vale basin
#

Yeah it's in project dir/config/defaultgame.ini

storm hamlet
quaint obsidian
final escarp
quaint obsidian
#

hopefully I'll stabilize this one and submit it to Epic

jolly fog
#

does anyone know if this guide is still worth following? i'm using 5.1 rather than 4 though. https://pgaleone.eu/cicd/unreal-engine/2020/09/30/continuous-integration-with-unreal-engine-4/ i will be doing both a windows and linux build so that's why i ask

iron bronze
jade current
#

I having issues to use local perforce server - I already have a static IP- . Is there any good tutorial for me to fix this? May I use my PC as server? And also may I use DDNS instead of paying for static IP?

mighty light
# jade current I having issues to use local perforce server - I already have a static IP- . Is ...

"I having issues to use local perforce server" is not helpful. Given the rest of your question I'd assume you are having trouble connecting to your server. You don't need a static ip to connect, although it is helpful. You can use your local pc or any other pc, laptop, rpi, nuc, etc as a server since a server is just software. You can use ddns but I would recommend using it behind something like cloudflare with a domain pointing to it otherwise you will have to keep updating the ip

#

If your server is on the same network you shouldn't need ddns, even if you are using dhcp. If it's not on the same network then it could be a number of problems, you just need to provide more information

umbral kindle
#

My svn server keeps having corrupt file system on initial repo uploaded files. Is there another source control method that would be better and free ? Need at least 10gb space though

blissful sparrow
#

Hi, is git (Github) usable for small indie project or shall i invest time in learning Perforce?

cyan jay
#

Git+LFS is usable (lots of people here use it).
Depends on your goals and team setup really.

reef oriole
clever vigil
#

Hi, everyone sorry if this is a frequently asked question in here, but I was just wondering what everyone suggests for a team of 6-12 people?

I've looked into Git + Git LFS, Git + Azure DevOps, and other more commonly used things like Perforce (with DigitalOcean) and Plastic SCM

#

I'm currently leaning towards Git + Azure DevOps or Perforce but just wanted to see what was recommended

fair monolith
#

If you think binary file locking sounds good, then Epic uses Perforce.

#

As for whether Perforce or Plastic might be better, I haven't tried Plastic so not sure there.

#

Maybe someone else can give some insight into that.

teal bone
#

If you ever hope to get a job at, or subcontract for, Epic, use perforce ๐Ÿ˜›

clever vigil
#

if anyone can give some insight into Plastic, Id appreciate it ๐Ÿ™‚

tacit maple
#

Hey y'all! I'm working on a project with some large file requirements, and trying to determine the absolute best repo setup. Essentially we will be growing to have a repo that is at minimum 2.5tb with 2 years, and will grow substantially from there. Without a doubt, Perforce is the best option for our needs - HOWEVER - I'm having a difficult time finding an existing service setup (like Helix in DigitalOcean or similar) that will allow us to grow to these repo sizes at affordable budgets. (We are a well funded company, but thousands a month for repository costs is currently outside of budget, but after 2 years we should be fine there). So I'm trying to find a good setup that will last us for the 2 years we need to grow to that point.

I was looking at potentially using Git SubTrees, and separate things like ULevels and their assets into individual GIT Repos and support them in the main repo via SubTrees, but running into a couple hurdles there.

Could absolutely use some advice on this. Thank you!

fair monolith
#

@teal bone what View setup do you use to limit your UDN workspace to the Engine?

teal bone
#

I have no idea how all that works tbh.

#

I have a set of batch files that update what I want.

#

Ghetto script.