#source-control

1 messages · Page 23 of 1

outer kiln
outer kiln
#

git push -u origin master continue to cause error and not commands I"ve found is fixing it

#

are those commands outdated ore something :???

#

the ... origin maser is the only one so far that hasn't worked.

arctic hornet
#

Hey there, I’d personally recommend using Perforce instead of git since it will open a lot of tooling made by epic which makes your life much more convenient + unlike default git implementation in unreal which is lackluster (people almost exclusively use git plugin from project borealis) perforce is used by epic themselves

#

If you have some questions or want help, just write here and someone will get to you as they’re available, there’s plenty people using both perforce and git who are willing to help (I’m personally on team Perforce 😄 )

#

There is plethora of reasons why this error could happen…

  1. you’ve ran out of space on its (iirc gitea gives like 10GB of space)
  2. you’re sending too large of a file (for example if you made a zip file of the whole project etc)
  3. you’re sending too large of a file for the HTTP to handle
night charm
arctic hornet
frail condor
#

I just discovered Perforce Dark Theme

#

just a reminder for all you like me didnt know about it

modern tulip
#

Checkout Diversion, no server setup required, and small teams find it convenient. See reviews on the UE marketplace

pseudo granite
#

Lets assume that with perforce, I would want different folders of content, all of which are shared. but I also want them separate from each other.

separate in such a way where one workspace might include the entire repository but other workspaces on different devices will only contain certain sub folders.

Should I use different depots, streams or something else to achieve this?

#

the stream sounds promising, but what if the stream is not supposed to derive from and include any of the files of its parent?
in that sense, perhaps separate depots would work better?

silver token
pseudo granite
silver token
#

Why would everything derive from main?

pseudo granite
silver token
#

Project1 and Project2 would be separate development streams with no relationship

pseudo granite
#

isnt the whole point of the dev streams to be an experimental extension of main?
meaning both project 1 and project 2 are contained within main?

silver token
#

I'm sorry, I meant to say mainline not development

#

So you'd have separate mainline streams that you'd import into other streams

pseudo granite
#

oh ok, I had no idea you can have multiple mainlines.

so for example

I am wanting to configure perforce to be able to contain multiple projects, not just one.

I was thinking of having a

Main
---Code Projects
---UE Projects

and then each of my regular python projects or whatever would each be a folder in the Code Projects area
and each of my Unreal projects would each be in the UE Projects area

so would you recommend making a Code mainline and a UE mainline (and perhaps giving each its own personal dev stream)

pseudo granite
#

I suppose this would make me hit the 20 workspace limit pretty quick.
especially since I was going to have everything on my desktop but also share the code directories with my laptop

silver token
#

It can depend on a lot of factors. At work I would probably have one depot per project because each project would likely end up with multiple streams (certain dev work, release branches, etc)
At home I've got one stream for all my projects (mainline), which then imports: a stream for each engine version, a stream for my plugins, a stream for 3rd party plugins.
My mainline has both UE and non-UE projects. Mostly because swapping between workspaces don't really make a lot of sense at home. And I'm on a source build so I don't want P4 to think I need to resync the engine when I change from one UE project to another.

pseudo granite
#

ok, that makes sense, thanks for the info

modern tulip
#

How did you revert the merge? And what do you mean by can't commit a merge commit a second time?

arctic hornet
#

For unreal you can easily have structure like this:

- //MyStream/Main
-- ./Engine - shared engine code
-- ./Project1 - project 1 files
-- ./Project2 - project 2 files
arctic hornet
#

regarding virtual streams I will give practical example here

#

AutoSDK stream in it's entirety contains stuff for both linux and windows

#

and my windows virtual streams just has the HostWin64 folder mapped

#

that way when I sync that stream I will only get windows folders

arctic hornet
#

i.e. like this... "Matcho" would be "Project1" and then you'd have "Project2" and "Project3" for example

pseudo granite
arctic hornet
#

virtual streams are indeed used for filtering, it works the same as the filters on workspace level, except it's shared and set "server-side"

pseudo granite
#

so is matcho its own virtual stream? what folder in this hierarchy is the virtual stream?

arctic hornet
#

quoting from perforce documentation:

Virtual streams provide users with the ability to restrict the workspace view of a real stream. Virtual streams act as a filter. They are useful when you want to:

- Submit changes directly to a stream but do not want to sync all of the files in the stream view to your workspace.
- Develop against the same stream but switch imported libraries, such as when you develop across multiple platforms.
arctic hornet
#

matcho is regular stream, I was just giving exampel how it would look with real unreal, rather than 2 random folders

pseudo granite
#

so if im understanding properly,
project 1 would be a virtual stream so that the workspace that is derived from it wont ever receive unwanted files from its parent?

pulsar parcel
arctic hornet
#

well, ideally you'd want to have your projects fully separated so they don't even share engine, since it allows you easier engine upgrades without breaking other projects

arctic hornet
pseudo granite
pulsar parcel
#

Nah that's a Windows setting not P4V

arctic hornet
pulsar parcel
#

The Epic way article is even pinned now

pseudo granite
# arctic hornet can you give more specific example, I am kinda confused as to what your setup wo...

I am wanting to configure perforce to be able to contain multiple projects, not just one.

I was thinking of having this structure

Main
---Code Projects
---UE Projects

and then each of my regular python projects or whatever would each be a folder in the Code Projects area
and each of my Unreal projects would each be in the UE Projects area

so I was then thinking of making a Code mainline and an UE mainline (and perhaps giving each its own personal dev stream)
but inturn, separating the repository into 2 different mainlines so it reduces confusion.

would you recomend this aproach?

arctic hornet
#

for non-unreal related projects you could use the old fashioned "local" depots (i.e. the //depot) it behaves more like SVN and doesn't have any structure to it, so you can just push anything in there... since that gives you the biggest flexibility

pulsar parcel
#

You can create separate depots ya know

#

Having unrelated stuff dumped to one stream depot sounds extremely cursed

arctic hornet
#

and as for unreal, if you're solo-dev and just want to store multiple projects, you can either make separate depots (as sswires) said, which I'd recommend because engine versions etc...
but if you need to use one stream, I'd go with //MyUnrealProjects/Main and then just have multiple projects inside the stream sharing same engine

#

or even just //MyUnrealProjects/Project1 etc...

#

but I still recommend //MyProject/Main

#

i.e. just like this, on this server there are two projects "Titan" and "Matcho" each of them are separate depots... and each of them has their own mainline stream

#

but for example, since one of my old projects from UDK days doesn't work with streams (UE3/UDK did not support stream depots) it's hanging out in the old/classic style depot

pulsar parcel
#

I'm more surprised there was a UDK release in 2015

arctic hornet
#

this was one of the latest UDK releases

#

I've got UE3 builds from as early as 2011 iirc

#

not on perforce though

pulsar parcel
#

I've seen some 2011 era UE3 code and it's oddly familiar

arctic hornet
#

I mean, all the UE code including initial releases of UE 4 were spearheaded by Tim and iirc Tim was the one that was doing initial R&D for UE 4

#

so it makes sense that even if we took a look to UE 1 (if there's a source code for it somehwere) we'd find stuff quite familiar

#

albeit most likely less complex kek

#

Iirc the reason why we have UCLASS and files in classes starting with U in general it's because those were originally classes written in the UnrealScript used in early unreal engines

#

all the C++ engine code was prefixed with F regardless if it was a struct of class

#

same reason why there are Public, Private and Classes folders... Public and Private was for C++ code and Classes were for interacting with the UnrealScript

#

(although don't quote me on this, it's just my understanding of the old unreal ways)

pseudo granite
#

@arctic hornet if the perforce server is made only for me, do you still recommend an ignore file for my ue projects?

arctic hornet
#

I do recommend ignore file all the time, since it save you the hassle of pushing wrong files by mistake

pseudo granite
#

👍

arctic hornet
#

although as a solo dev it's not that big of an issue... but it's still annoying

#

imagine you push some random DLL by mistake and suddenly unreal refuses to build

#

and you have to track which dll is it you locked by mistake etc.

pseudo granite
#

i just wanted to ask since it seems like it will ignore my custom settings

#

sounds good though

tight granite
#

Hi All 😀 Does anyone know the easiest way to solve this issue I’m having?

modern tulip
tame current
#

I got a couple of assets from the starter content that keep showing up whenever myself or a team member opens up unreal, I think this is caused because at some point they were in the gitignore and now they no longer are but I don't know how to fix it, even when they're comitted they keep showing up, is anyone perhaps familiar with this weird thing? can I somehow nuke them from LFS and recreate them?

arctic hornet
#

Well, since the hash keeps changing it means that something keeps changing the file, so not much you can do there other than figuring what keeps changing it

pulsar parcel
#

oh yeah this little gotcha, it's because it'll constantly reimport the starter content on editor startup

#

it's configured in some INI, don't know which off the top of my head. it should be possible to text search it though

tame current
#

Madness

gusty lion
#

Does P4 have any advantages over SVN for a solo dev?

arctic hornet
#

Overall better integration with unreal I guess, most of the benefits like per-file permissions and file locking won’t get you any benefits for solo dev though

outer kiln
#

setup repo via github on local system, went fine, but ue5.4 not seeing on sc setup attempt, it keeps defaulting to prior .git dir, do I need to reboot or is something else at play, btw: new .git is on flashdrive, is that also a problem ?

#

in other words, ue is still looking at g:, but the currenet one is on H:

#

maybe gitbash is mandatory for setup?

pseudo granite
#

what in the world is happening with this?

#

I cant even select which user I want, let alone create a new one for myself...

outer kiln
#

sounds like you havent'[ yet setup that user in perforce app

pseudo granite
outer kiln
#

yes thats the error I believe, its not there yet, hence no permissions

#

unless you didn't run as admin ?

pseudo granite
#

Im literally just trying to connect with a new user for my other device, and its not letting me

outer kiln
#

are you sure you, that username in pf, is listed as a user with admin

pseudo granite
outer kiln
#

well there you go yuou have no permission to setup such accoungts its plain as day

#

and I've not used p4 for a bit, but I did get it working fine, eventually

#

short of that, there is at top of screen here, the PIN button , where there are tipsfor using varoius sc, and p4 has several tips and links

pseudo granite
# outer kiln well there you go yuou have no permission to setup such accoungts its plain a...

As you can see, I have a user with the name I want, but it wont let me set permissions on them...
it will for the accounts I already have, but when I create a new user, the entire GUI just ruins itself.

like, where is the option here to set the permission level to superuser?
its directly in front of me when selecting literally any other user, but when I create a new user, the entire GUI widget for permissions is missing.

#

heres a picture that shows it really well.
How can I have 3 users, but only 2 are shown in the permissions UI?

#

(In currently signed in as "Nicks-Laptop")

#

(so currently superuser)

outer kiln
#

like I say I stopped using it for a bit, went for git which is free ( local repo), if PIN above isn't helpful, try google or bing search being succint and specific to get best answers,sorry I can't help,just a bit rusy here and there swith perf.

outer kiln
#

or wait for someone whom is more current in their perf knowledge

#

yup PIn above, at top of this UI here

#

its not obvious but there are several perf aids and gjuides

#

it lookslike a push pin you'd stick in cordboard or such

pseudo granite
#

(which is basically impossible lol)

outer kiln
#

well they are beginner perf docs, ive used them before ,,there are a few

#

click on PIN above, it looks like a push pin, next to BELL

#

several perf guides that goto UE tut page as I recal

#

recall

pseudo granite
outer kiln
#

yes, it LOOKS like a bell , very top of discord UI

#

goto top, a bit to right, and they are all there

pseudo granite
#

oh I thought you were talking about Perforce

outer kiln
#

nope

#

hope some of those help

pseudo granite
#

thanks

#

@outer kiln hey one more question.
( @arctic hornet wonder if you would know this)

I want to run this command for my Perforce server.

p4 configure set run.users.authorize=1

does it need to be done locally from the cmd on the servers machine? or can it be done from the cmd of a separate device who has access to a superuser account?

arctic hornet
#

it can be ran from any computer that is currently connected to that perforce server under the credentails that are super

outer kiln
#

im SO sorry , out of my league, never had a server,was just using local ssd o_0

arctic hornet
#

no worries, better to ask than loose stuff 🙂

outer kiln
#

not being able to help is a sad deal

arctic hornet
outer kiln
#

hope you find sollution SOON

arctic hornet
pseudo granite
arctic hornet
#

depends on specific variable you're setting

pseudo granite
#

oh ok

arctic hornet
#

there are some variables that accept strings etc.

#

btw... if you have sufficiently new perforce server and p4admin tool you can also configure it from UI 🙂

#

by filtering using the search and then double clicking on the variable you'll see window like this

#

you can either unset it (if value is empty) which would set it back to default... or by typing new variable

#

you don't have to care about the "Server" unless you're running whole cluster of servers

pseudo granite
arctic hornet
#

in this case I'm not really sure, I recommend creating new users through p4admin anyways

pseudo granite
outer kiln
#

but thats where the perforce tuts have you create users

arctic hornet
#

by default users don't have any permissions

arctic hornet
#

hence my recommendation

pseudo granite
arctic hornet
#

this button 🙂

outer kiln
#

no sorry I was agreeing with you, you create users in p4admin as per perf tuts etal

pseudo granite
arctic hornet
#

that means that you have wrong syntax somewhere

#

on line three, which is the newly added line

pseudo granite
arctic hornet
#

what I would recommend you do is this, instead... and make a "Super" group and assign all your users to it

arctic hornet
#

under the hood the table is a text file

pseudo granite
arctic hornet
#

which looks like this (for the table I sent above)

pseudo granite
#

but that makes no sense because my other user has one

arctic hornet
#

it's more likely that you have wrong Folder/File specification

pseudo granite
arctic hornet
#

the protections table is the table with the permissions

#

this is the line it's angry about

pseudo granite
arctic hornet
#

saldy I can't see the last column

pseudo granite
#

hold on ill clip it

arctic hornet
pseudo granite
arctic hornet
#

yes there is the issue

pseudo granite
#

im guessing its the //... not being there

arctic hornet
#

you need to add //...

#

that means "apply to anything recursively"

#

empty is not valid

#

hence it's complaining

#

to save the stuff there's "Save Edits" button on the right

#

once you have the //... there it should save just fine

pseudo granite
arctic hornet
#

well that is because the user 117nf does not exist - which is self-explanatory, I presume you unchecked the checkbox that will show you the Connection window first

pseudo granite
arctic hornet
#

that's because you have your permissions set so

#

nobody other than the three users you have specified have ANY permissions whatsoever

pseudo granite
arctic hornet
#

which even includes browsing the users, streams etc.

#

it should, but I'm honestly not sure, the way your permissions are set up is highly unusual, so it might not play well with that - or the server might just need restarting

#

I recommend double checking the value in p4admin as I've shown previously

pseudo granite
#

would that just be p4admin in cmd?

arctic hornet
#

no, the UI

pseudo granite
pulsar parcel
#

what even is this tab

pseudo granite
arctic hornet
pulsar parcel
#

oh I just did that from CLI. didn't know they even made a UI for it in p4admin

arctic hornet
arctic hornet
#

but gives you complete list of variables ,their values etc.

#

and includes some useful notes + link to the documentation

pseudo granite
#

am I supposed to be following every single one of these commands?
it almost looks like I get to choose some of the comandshttps://www.perforce.com/manuals/p4sag/Content/P4SAG/identifying-your-server.html

arctic hornet
#

just use p4 serverid master and done

#

(feel free to replace "master" with whatever else you want... I just use master for... well... the master server 🙂 )

pseudo granite
#

I got in and I can see
p4 configure set run.users.authorize=0

its set to 0

pseudo granite
arctic hornet
#

it is

#

well, it allows you to browse the configuration variables

#

and the command you set should allow you to browse stuff

#

but as I've said, I'm not really sure why it's not working for you, could be the permissions, could be something else

#

hard to debug over discord (and especially since I'm in a meeting, so I can't really focus right now)

pseudo granite
arctic hornet
#

yeah

#

and this should work at least based on the information I have available about your server

pseudo granite
#

@arctic hornet @outer kiln @pulsar parcel I'm in through p4v. 👍

I cant browse users when connecting, but I can enter the exact name and auto connect, so I suppose that's good enough.

Thanks,
If I've said it once, I've said it 1000 times but perforce is perfect when everything is fine, but the moment it isn't, it will put up some serious competition for the worse software experience ever. Any version control system that has so much as a search bar and a freakin dark mode will sweep the market out from under perforces feet. Too clunky, too confusing, too..... bad? yea... definitely.

but thank you guys, your 45 mins of answers just gave 20x better (and 65x quicker) advice than perforces entire customer support dept.

if I wasn't broke af id gift nitro, maybe next year😆
Thanks again

#perforce=bad

arctic hornet
#

Perforce's interface can indeed be clunky and the rest is true for every VCS I've worked with

#

as long as stuff works it's pretty much smooth sailing, but the moment I had to debug git-lfs issues... oh boy... that was a nightmare

#

and honestly, what I know about perforce came from about a day of reading the documentation and then years of experience managing perforce servers, but I still use the same knowledge I read in the documentation way back in the day - also the reason for my limited knowledge, since I forcus on certain area, mostly going exactly against what you're trying to set up: disable reading any users unless signed in, configure stuff to avoid password guessing, setup strong security overall... configure stuff for best performance etc... etc...

And good luck next time 🙂

outer kiln
#

I have/had no issues with perforce, but then I never used it extensively, part of me was worried longterm, about costs, so I've decided to try git, jury out

lament turret
#

I use perforce professionally and github for personal projects. Github's visual studio integration is far, far superior but perforce does have some useful features for expansive projects with many versions.

tight granite
#

Can someone please help me with this? What's the easiest way to fix my issue I'm having 🙂

outer kiln
#

You reverted and ?

snow wedge
#

How do 3d artists handle source control? Is it as needed as it is with code?

silver token
wide raven
arctic hornet
#

but if you also interact with engine, like importing and testing in-engine... you probably want to have source control access etc.

#

if we focus ourself on Unreal (and perforce), you'd ideally use UGS (Unreal Game Sync) with PCBs (Precompiled binaries) that way artists don't have to build from source code and can directly download built editor from central source. but if they are pure 3D artists and studio doesn't have DAM pipeline (iirc some thing from Autodesk is pretty common for that - or Helix DAM etc..) artists would just use some simplified client like Helix Sync to submit their assets

#

but all and all from what I've seen in all of the studios I had the oppurtunity to see into there is no real standard... the only common thing is that all raw assets are either versioned in source control, or stored in some other searchable and "versionable" fashion (i.e. Helix DAM or the autodesk thingy)

#

(though Helix DAM uses perforce as backend storage anyways)

outer kiln
#

HM well, git no longer, just trying to view changes is causing gpu to crash with out of mem error, tho I know its not out via task manager SO back to perforce it seems, thusly: in p4d , make new workspace ( doesn't work as I thought), but it populated it with files in another wkspce in p4d--whats the best way to fix this mess,,I can lock those files, but I see no way to create a new depot and attach to new wkspce fornew ue project ??

#

make a new stream, given they seem prefered ..

#

lol , also ODDly, even tho I get wkspace not at root or above as error, perforce is STILL green light as working , lower right corner of ue5.4, is this a known thing in 5.4 or ?? ;00-0 lol

#

Connection Error: Workspace 'neighborlee_Essence_5464' does not map into this project's directory.
CommandMessage Command: Connect, Error: Workspace 'neighborlee_Essence_4187' does not map into this project's directory.

#

oops, found new depot create sorry, in perforce admin

tight granite
#

Hi All, I have an issue with Git. I'm using GitHub desktop. I merged a feature branch into main and realised a bug. So I reverted the merge and fixed the bug. I then wanted to recommit the branch a second time, and I realised that I can't commit a merge commit a second time in GitHub desktop with all the commit history. I realised that I could do a "git merge --no--ff branch-name" in Git. I tried this command but I had a lot of merge conflicts. So I fixed the merge conflicts in Github Desktop, but unfortunately the merge in GitHub desktop didn't pick up all the changes (17 changes vs actual changes of 224 ) of the feature branch I'm try to re-merge into the main branch. Can anyone please let me know what the easiest way is to fix my issue I'm having? I know Sourcetree has a feature called "Create a commit even if the merge resolved via fast forward" but that's my last resort to switch to Sourcetree instead of GitHub desktop. Many thanks in advance for your help 🙂

meager hamlet
#

Hey! Would anyone here know there reason why SVN in UnrealEditor is way more slow slow to connect and do other other operations (checking asset history, etc) in Linux (latest Pop_Os!) than doing the same thing in Win10? It's a local repo (using file:/// url) so it should be quick on both. SVN is slow only when doing something in the Unreal Editor under Linux - CLI performance is very good.

I tested with the same project and same setups for the svn repos. The only difference that I'm aware of is that the Unreal Editor under Linux uses the updated svn binary and Win10 uses the old svn binary that comes with 5.4.4.

It's giving me a headache as checking the history of a file takes 2mins even though the repo was just created.

meager hamlet
outer kiln
#

hi querstoin, how did you get past the svn error of incorrect version number ?

hoary wren
#

Any advice on how to get the Antimalware Service Executable to ignore Rider / UE editor / Packaging the game on my machine? Rider has some automation around allow-listing some UE-related things but it doesn't look that effective, at least on my machine

meager hamlet
outer kiln
#

yes ,anyone actually but thx for info :)) Had no idea that was possible , all internjet searches yielded nothing nor did forums

#

shocker

#

same as UE, you mean project settings?

#

or maybe plugins>svn version

outer kiln
#

ty

#

nice! unlike so many its fairly current :))))

meager hamlet
#

Yup! Rarity 😄

outer kiln
#

very current

#

using git atm, and it just all gelled today,,BUT if this doen't work out, Ill definitelly try SVN, your info was awesome .

meager hamlet
#

I was running perforce before, but I wanted to switch to something free and scalable beyond 5 people.

outer kiln
#

DITTO!!

arctic hornet
#

it's just microsoft defender going like "heh, new file, gotta check it"

#

and it tends to slow down a lot of things quite a lot especially if your computer isn't the fastest

hoary wren
arctic hornet
#

yes it ignores any subdirectory (and files) in the folder where you add exclusion

#

although since you're adding exclusion, be careful about what you put in that folder, because obviously defender doesn't scan in excluded folders

meager hamlet
#

Anyone know where Revision Control settings are stored for a project? There has to be a config/ini somewhere, right?

meager hamlet
unreal citrus
#

Has anyone faced an issue with git lfs where:
git lfs unlock "Content/Path/To/Asset/MyAsset.uasset"

returns error
unable to get lock ID: no matching locks found

but using ID to unlock like this
git lfs unlock -i 50
does actually work and unlock the asset properly?

teal bone
#

Sure you got the asset path right?

#

Sanity check and all that. 🙂

ancient oxide
#

In P4, how do you rollback changes for just specific files in a changelist? Say 5 files in changelist 49, but in changlelist 50, I'd like to take files 1 and 2 from the previous changelist and roll them back to their changelist 48 version?

cyan jay
ancient oxide
desert lily
#

hey guys. New to UE5+. Need to setup a new project. Want to try something other than git and manually building project this time. I see repos having auto build systems and auto changelog generation etc. I have been doing this using python scripts for ages now. But maybe I wanna graduate into more big boys toys. Any link/help/guide for my options?
Also, I was reading up on perforce, and its just us 3 doing this project, I can try perforce seeing that its free for 5 or under, but is it too much of effort/time investement to setup as opposed to other systems like git with custom scripts to automate?
I am well versed with computing tech, so technical difficulty of solution is not a concern butjust dont want to bang my head against the wall for no reason.
tl:dr, small team with 2 dev and 1 artist. Want to start a ue5 project for mobile. Been using git and custom scripts for prior development, now want to try something more industry standard for ue5+ etc and specially wanna try bin version controlling too. Lost countless hours due to no bin vernsion controllers in the past.
DM's welcomed

arctic hornet
#

if you're going to switch to perforce and set up your streams just right you'll be able to use tools like Unreal Game Sync and Horde which together can provide precompiled binaries for artists and/or do general CI, automated testing etc. etc.

#

For basic perforce setup, almost anything will do, the only thing I recommend is at least 250 gigs of space for data, since unreal projects can get big real fast

#

I sadly don't have much time to help you set your perforce server from scratch by guiding you step by step... but if you have any questions feel free to ping me and I'll get you an answer as soon as I have time

remote ermine
#

is it required the have a server (hardware or cloud) for perforce in order to use it with multiple people. or are there any free to use options out there?

arctic hornet
#

perforce is self-hosted, so you need some computer/server/whatever capable of hosting the perforce server, if you have fast internet with public IP address at home (i.e. people can connect to a computer running on your network from the internet), you can easily host at home, but otherwise you'll need a server or something

remote ermine
#

and how would i let my friend connect to my pc via perforce? and does this come with any risk for my pc? and would a server be saver?

long mural
#

//Ironward_UE5/Templates/TemplateResources/Standard/CollaborativeViewer/Content/Blueprints/Pawn/VR/BP_VRPawn.uasset - can't open //UE5/Epic-Pristine/Templates/TemplateResources/Standard/CollaborativeViewer/Content/Blueprints/Pawn/VR/BP_VRPawn.uasset (already opened as //UE5/Release-5.4/Templates/TemplateResources/Standard/CollaborativeViewer/Content/Blueprints/Pawn/VR/BP_VRPawn.uasset)
what does this mean?

arctic hornet
long mural
#

the file is not opened anywhere.. interesting

arctic hornet
#

but unsure

#

first time seeing this error

long mural
#

yeah its odd

arctic hornet
#

tbh, oculd be orphaned checkout

long mural
#

maybe a stream switching issue

arctic hornet
#

do p4 opened -a -x (or -u username -x)

#

that will include orphaned checkouts

#

as sometimes where command crashes or something like that, checkout is "orphaned" i.e. file is locked as it thinks you or someone else has it checked out, but global checkout table doesn't think so

#

though I've opnly seen orphaned locks that produce "already opened in XX" where XX is workspace rather than another file

remote ermine
ocean anvil
ornate matrix
#

for a source engine build, what files should i add to source control in Engine\Binaries\Win64 ?

arctic hornet
#

the ones that are there when you sync from git and run setup.bat

#

in general add to source control everything (other than .git folder) what you get after pulling from git and running setup.bat

#

do not build or touch anything else, just pull/clone and run setup.bat, that's it

ornate matrix
#

well binaries is only filled once you build it

arctic hornet
#

Not really

#

There are some things that are already there like UBA etc.

ornate matrix
#

i might be confusing with the project defaults folders

#

well i have it since a while so i dont remeber what was and wasnt there

#

i guess i can look the epic repo and see whats there by default

arctic hornet
#

you'll have to clone and run setup.bat locally first, since a lot of these binary files get downloaded only after you run that script

#

for example this is what we've got on our perforce server

ornate matrix
arctic hornet
#

for comparison

#

just clone appropriate version of unreal from epic and check against that

ornate matrix
#

i can just check the files in github

#

but thanks for the help

arctic hornet
#

as I've said, ton of files isn't visible on github

#

since it's not hosted on github

#

epic hosts binary files on their own separate CDN and those files get downloaded while running setup.bat

ornate matrix
#

ill do that then

arctic hornet
#

but I still recommend clonning and running setup.bat as it's easier than reading the 30 MB xml file 🙂

thorny wind
#

Hello everyone!
I have a source control/UGS dilemma
I followed all the learning (https://dev.epicgames.com/community/learning/tutorials/8JYW/epic-indies-setting-up-an-unreal-engine-studio-the-epic-way) and all the tutorials on setup UGS, precompiled binaries.
Now I have something odd in engine build management.
Right now in my company, we have 2 projects that share the same engine code using some stream mapping like explained in the p4 tutorials:

  • UE stream: //UE5/main/…
  • ProjectA:
    //ProjectA/main/… with view:
    share ProjectA/…
    import+ … //UE5/main/…
  • ProjectB:
    //ProjectB/main/… with view:
    share ProjectB/…
    import+ … //UE5/main/…

The build machine creates precompiled binaries with the command:

RunUAT.bat BuildGraph -Script=ProjectA/Build/ProjectABuildGraph.xml -Target=“Submit To Perforce for UGS” -set:UProjectPath=“ProjectA/ProjectA.uproject” -set:EditorTarget=“ProjectAEditor” -BuildMachine -set:ArchiveStream=//ProjectA/binaries -p4 -submit

The issue is that the build.version in UGS and on the script is driven by the project stream, not the engine stream, resulting in CL and stream versions incompatible between the 2 projects.
How do you think this should be managed? Am I missing something?
Thanks for the help

arctic hornet
#

well, one way to do it would be to always build binaries for both projects after any change in any of the two projects

#

that's kinda the only thing that I can think of that would work properly

#

other than manually tweaking the CompatibleCL flag... but that would be hazardous if you change asset structure

silver token
thorny wind
#

thanks for the answer 🙂
Building the binaries for both projects is basically what we do...
The 2 projects share the same engine source code and for instance, projectB imports assets regularly from projectA. If an asset on projectA has been saved with a CL bigger than the one on projectB, the import fails but technically the asset structure didn't change.
@silver token we don't checkout the Build.version, but it is automatically modified by UGS at sync and by the build machine with the option -Buildmachine in the buildgraph script

#

in my opinion, there is something on my setup that is not right 😅 but i can't figure out the best way to handle such a situation

silver token
# thorny wind thanks for the answer 🙂 Building the binaries for both projects is basically w...

I'm not sure there's anything you can do about that, other than wait for a ProjectB build that is after the CL of the ProjectA asset.
It's not all that different from trying to sync individual files from future changes within a single project. The versioning is there to prevent data loss, even if in this circumstance you know there isn't any.
But you have engine source so you could always locally modify something to skip that check that one time, but there lie dragons 😉

#

And if you're doing a lot of sharing of assets, consider moving them to shared plugins instead of importing. unless it's just a starting point an each project really customizes that asset for project specific needs, but even then there might be something to share through a plugin to make it easier than this.
Though you'll still have some of these same versioning issues (though they're for the best in my opinion)

thorny wind
#

I was reading some previous messages and I saw [this](#source-control message)
Do you think that some of those issues can be mitigated with a stream structure like this one?

#
  • //MyStream/Main
    -- ./Engine - shared engine code
    -- ./Project1 - project 1 files
    -- ./Project2 - project 2 files
silver token
# thorny wind I was reading some previous messages and I saw [this](https://discord.com/channe...

Yes-ish, but I don't recommend coupling projects together like that. Though it depends a bit on your goals for those projects.
For shipping projects, it's really good to make sure that changes from Project1 can't actually mess up Project2 without P2 actually wanting those changes.
That includes engine upgrades. If P2 is weeks from shipping and P1 isn't and wants the latest engine version ... well now you're kind of stuck.
My home projects are setup the way you describe, because they won't have this problem.
At work we have a sandbox for experiments setup this way, again because they won't ship.
The actual projects have their own stream for the engine, branched off a common engine stream. That way the common stream can update whenever (say day0 release) but each project can merge down that engine update based on the schedule that makes sense for them.
#source-control message is a post I made that has an image of the setup I'm working on massaging our depot into.

arctic hornet
#

one way to handle all of this would probably be to have two-way robomerge setup and just have "shared" engine as in... two separate engines and just propagate changes to both of them

#

but that sounds like a crazy idea for more complex setups with multiple projects

#

but it would also allow for project specific engine tweaks

#

afaik epic just has separate engine instance for every project (unless we're talking about sample projects that just live alongside UE5 and Fortnite streams)

tame current
#

So, after trying to work with a team of ten artists on a cinematics project with Github+LFS+ the git lfs 2.0 plugin - I figured out that while things aren't bad and we haven't had merge conflicts I'm still required to provide too much tech support and moving to perforce is probably due - so the question is, given that it might be that in 1-2 months we may want to archive the thing... am I better off settings things up in Azure/AWS or setting up a dedicated server with Heztner or something? The team is spread all around the globe so that is a small factor, I'm leaning towards a dedicated server, is this the wrong choice? it seems like setup on Azure may be the easiest but I'm not a fan of how the costs of cloud services can baloon unexpectedly, I dont know. Will I regret managing a server?

woven sluice
#

well... if you're worred about server costs, don't forget the several thousand USD/yr you might have to spend on perforce

ocean anvil
tame current
#

Mmm... we are already spending 100+ USD a month on LFS data packs alone.

#

But yeah 5000$ is a bunch.

woven sluice
#

trade $100/mo for $50-250/mo (server) + $450/mo on perforce

ocean anvil
woven sluice
#

that's 5 user limit i think. not sure

tame current
#

One of the issues with github/lfs that makes it particularly unsuited for out project is that some cloth-sim and other cinematics related assets can be quite huge, and github just doesn't deal with 4gb and above files, is this problem potentially not an issue with azure?

ocean anvil
#

don't use github for UE5 projects ever.

#

github is awful to work with for ue5 projects because of exactly the problems you are having in regards to files sizes and limits

woven sluice
#

i only use it to stash my plugin projects, if i didn't use perforce i would definitely have a self hosted git server

tame current
#

I am really not that eager to do perfroce but I have been disappointed with the locking/checkouts reliability when using the PB Git Lfs 2.0 plugin and github

ocean anvil
#

i'd set up git on azure devops, its free and with none of the file size limit shenanigans of github

#

normally i'm all for perforce, but it honestly does not make that much sense in your usecase.

woven sluice
#

(no it's not free, but probably very competitive still compared to github)

ocean anvil
#

git on azure devops is free?

woven sluice
#

again users

#

10+

#

oh, $6/mo/user... lol. might as well be free

#

must be more to it

tame current
#

It's a project with a budget so like, I don't need a 'free' solution, would happily pay for 'reliable' 🙂

ocean anvil
#

ah yeh you already got it mb

woven sluice
#

anyway depends if you are good at linux or not and how much storage you need... it's nice to run your own VPS but it can be very frustrating if you're not a linux guru

ocean anvil
# woven sluice must be more to it

they want to lure you into their eco system, where you buy into many of their other products, the advantage for UE is that we basically have no use for >90% of their tools.

tame current
#

For me really the question is whether the perforce-unreal integration is itself significantly better than the other revision control integrations that the experience for the artists would be much better

woven sluice
#

well, it is better, but i still personally never use it except for checking out (locking) assets when i start editing them. i never trust it for submitting or pulling

tame current
#

They are really not technical and I cannot enforce any real merge-avoidance policy short of file locking and checkouts

woven sluice
#

learning perforce is also a little bit of a beast in and of itself if you're all new

ocean anvil
woven sluice
#

it's reliable though (i don't know how [un]reliable PB Git is)

tame current
#

With the git lfs setup currently my problem is that sometimes files just remain locked even after they've been comitted and checked in by the artist, at which point they must contact me to unlock them

ocean anvil
#

the bigger difference and advantage with perforce comes with some of the more advanced toold outside of the engine like UGS horde etc. which only work with perforce

tame current
#

I haven't been able to identify what's causing this, I can't reproduce this, I suspect it's related to their git credentials

ocean anvil
tame current
#

yes but I can only ask so many times if they're sure they're only comitting through the revision control menu in unreal 😦

#

So, basically, the advice thus far is: stick it out with git/lfs but switch to azure to remove file size limitations and reduce costs

woven sluice
#

research first if azure devop's hosted solutions have similar limits (per file etc)

#

and perforce good, usually, some people still have varying opinions, but fairly substantial time + $ investment

#

or you could be a trailblazer and check out diversion (i know nothing about it but you can search for chats about it here to get some pros and cons opinions on it from outside perspectives - almost nobody here with real world experience on it yet though)

tame current
#

Well, learning how to set up perforce and working with it seems valuable to me, I know it'll be a struggle but seems like something that is "good to know"

woven sluice
#

i am personally praying to get away from perforce purely out of spite at their long-term refusal to offer any sort of indie-friendly price points

ocean anvil
#

eh, diversion among other things doesn't let you directly access your own data, and with no ability to self host or access your own data i wouldn't trust it

#

diversion will hopefully become decent competition for some of the other players, but for now i wouldn't trust my data with it

tame current
#

Eh, I mean, I don't want to muddle the discussion further but one of the artists said he had a postivie experiene with Unity/Plastic in unreal, any particular reason why it really doesn't get much traction in this channel? it is hardly ever mentioned as an option

ocean anvil
#

no file locking is 1 of the biggest reasons iirc

#

unless i'm thinking of something else

tame current
#

it's the first feature they advertise in their feature list

woven sluice
#

a long time ago it sucked and everyone forgot about it, plus nobody wants to support that sinking ship company edboy but yes, really it could be worth considering

#

it's really too bad plastic sold out

ocean anvil
#

yup i was thinking of something else, idk. personally i've only ever used perforce, which has always worked great for me.

#

though thats also because i'm solo and its free.

#

its cost is its biggest drawback. its shitty UI from 2006 its second.

tame current
#

Well, a lot to ponder.

arctic hornet
paper hound
#

hi ! What's the easiest way to use source control for beginners ? thanks !

modern tulip
# paper hound hi ! What's the easiest way to use source control for beginners ? thanks !

If you're familiar with git, you can set it up with Azure DevOps.

If you want to manage your own infra you can set up Perforce, or if you want to use it in the cloud there are CloudFormation templates to deploy Perforce on AWS.

You can also use Diversion if you don't want to set up an AWS/Azure account. Full disclosure, I'm one of the cofounders

All of the above options will be free for 5 users if I'm not mistaken

paper hound
#

im interested in something simple and user friendly because i will be working with someone that's not familiar with ue5 or perforce push and pull system

#

diversion looks really cool ! ill try it out !

#

i love the logo ahha like lazy sloth

#

Is there a way to use it simulatanously like seing what the other person is doing like on a google doc for example? Thanks ! @modern tulip

modern tulip
#

You can see which files are being edited (not the contents though, until they're committed) - there's an indication in the desktop/web app if someone is working on a file (works across branches too). Live Docs-like "pair editing" would require deeper integration with editors, that's not yet supported 🙂 Currently in the UE plugin when you edit files they are automatically soft-locked, so if someone else opens a file that's being edited they'll see a warning

paper hound
#

ok amazing i get it
yeah i'll come back in a few years ahha

ebon hound
#

I'm testing Perforce right now and any time I submit something they all get locked. For example, character source code is locked after I submit it. I can't edit it without making it writable every time

#

Is this an intended behavior? Is there some setting that can disable it?

merry verge
#

that is entirely intended, you have to checkout files you want to edit.

#

use whatever perforce integration there is for your IDE, they generally prompt for a checkout when you try to edit a file. VS has a plugin, rider supports perforce natively and just requires configuration.

ebon hound
#

That's great to hear. I thought I really messed this up, especially after uploading 50GB of files to Perforce cloud. I configured Rider and now it feels less annoying with the checkouts.

silent minnow
#

Hello, is there a way to find out any information about difference between two maps? I don't expect a fast way to see the difference visually in the editor, but a way to see whether an actor was added/removed, or maybe some of the properties were changed

arctic hornet
#

In theory there is, but sadly not built-in… you’d manually have to make editor action that manually diffs the two maps on actor by actor and property level

jolly fog
#

had a bad crash on my laptop now my github desktop is completley messed up and says "unknown brach" and is showing me some super old commits only. It wont show the correct branch on the branch drop down. on the github website it seems fine with my newer branch, so i guess my github desktop is completley messed up then. How do I fix? Reinstall all of github desktop?

ocean anvil
modern tulip
ocean anvil
# jolly fog So MEGA then for UE projects?

mega? you mean the cloud storage? thats something completely different.
github has alot of issues when working with UE projects. largely due to filesize and storage limits. if you want to use Git you should use it with something like Azure Devops. not github.

pulsar parcel
#

Github Desktop is also terrible

#

Fork is good

royal cradle
#

Hello. I am trying to revert a file that was checked out by a user that no longer is part of the team. How can I do so using Perforce and P4V? I have admin privileges.

pulsar parcel
#

p4 unlock -f //path/to/asset

#

oh you might have to specify their client name too with -c <workspace name> after p4

#

but there are useful google results for this problem

royal cradle
pulsar parcel
#

then like I said, you have to specify the client

#

ie. workspace

arctic hornet
#

You need to use the depot path rather than local path + your account needs to be either admin or super level to modify files for other users

pulsar parcel
#

I'm going through my command history on my PC

#

p4 revert -C ws_name //path/to/file might be it

#

seems to be the right one

royal cradle
#

p4 unlock -c perforce_XXXX-Home_ALT -f GEV_Box_Projectile_Car.uasset says "Invalid changelist number perforce_XXXX-Home_Alt"

arctic hornet
#

Capital C

#

Lowercase c is changelist number

#

And also you usually need to specify whole path like this //Depot/Stream/Path/to/file.uasset

royal cradle
#

Capital C says invalid command.

pulsar parcel
#

p4 revert

#

p4 revert -C ws_name //path/to/file

royal cradle
#

Still says "Client Unknown"

pulsar parcel
#

and when you mouse over the file in p4v?

royal cradle
pulsar parcel
#

that isn't the workspace you specified then

royal cradle
#

Same thing happens

#

Did I skip a step?

pulsar parcel
#

I don't think so, does the workspace show in the workspace list if you remove the username filter?

royal cradle
#

remove the username filter/

pulsar parcel
#

yes that is what I said

royal cradle
#

Yes it's there.

pulsar parcel
#

can you show a screenshot of it?

royal cradle
pulsar parcel
#

SambaArtist_Nigel is correct then, though I don't know why you p4 revert line has -f in it

#

though that is quite the casual showing of breaking the P4 EULA I guess

#

password sharing to get around the user limit

royal cradle
#

There's a workspace limit. They know.

#

@pulsar parcel So how exactly do I use the client command? There's a lot of options.

pulsar parcel
#

?

#

I told you verbatim but you added -f to it

royal cradle
#

Like this?

pulsar parcel
#

yes, and are you logged in as the admin user?

royal cradle
#

Yes and yes.

pulsar parcel
#

did you open the command prompt from p4v so that the environment is also correct?

royal cradle
#

I'm logged in to P4V as admin. Is there some other step I need for CMD?

pulsar parcel
#

well how did you open it?

royal cradle
#

Lets give that a try. Previously I opened CMD from file explorer

pulsar parcel
#

from p4v will set environment variables up to match your p4v session

#

otherwise, you'll need to make sure p4 set shows things correctly

royal cradle
#

I'm getting a different message now but it seems to have done nothing.

#

oh wait

#

Perfect. I removed the -f

#

Thank you very much!

upper grotto
#

Hey guys, I'm working with a friend on a game template and we setup a p4 instance on Inode, everything works great until it doesn't. He made a stream to work on motion matching while I've just been working directly on dev updating some CommonUI widget BP's so we did not have any overlapping going on.

First, my local workspace for dev branch thinks it in sync with the depot dev but I'm missing files from his recent changes that are submitted and that show in the depot files. So I'm not sure why I fall out of sync.

Second, The depot itself seems out of sync with the change log. For example image 1 shows his change 125 pushed up abp_manny_mm_GASP_ThirdPerson.uasset#4 but image two shows the depot reflects version #1 for that asset.

silver token
upper grotto
silver token
upper grotto
#

I see now that in his 120 change it was to his stream and not to dev

#

Vs 117 was to dev/core

#

or rather core/dev

pulsar parcel
#

I'm not even gonna ask what "GMASex" means

upper grotto
#

lol trust me

#

its not that bad

#

Its General Movement Ability System Extended

#

GMC is General Movement Component, then GMAS is the community GAS replacement that works with GMC prediction

pulsar parcel
#

Also as a general workflow thing, you seldom use dev streams in P4

upper grotto
#

Then GMAS Extended is another layer that extends it for motion matching

pulsar parcel
#

You want a dev stream when "this is going to fuck shit up for a minute" type of work

upper grotto
#

Yea, which we're both doing

pulsar parcel
#

Most of the time you're doing trunk based development in main

upper grotto
#

mmm, so not individual streams off dev for larger items that mess up compiling for a bit?

pulsar parcel
#

And by fucking shit up i mean blocking each other's work, and by a minute I mean more than a day or two, but your work seems interdependent

upper grotto
#

Well at this point it was on purpose

#

because we had an issue merging before. So we create a stream off dev if we are going to break it for more then a day or so

#

Which right now we are as we're working on larger items, I just deleted my UI stream after pushing it up.

#

and am now just working on some smaller bp updates for widgets

pulsar parcel
#

Dev should be the mainline tbh. If you need to stabilise then that's usually what release streams are for

upper grotto
#

Am I doing it wrong by treating it like Github branches that you delete once you merge

pulsar parcel
#

And Epic even provides a nice tool called RoboMerge for automatically merging between streams which is useful for release to main merges

upper grotto
#

If you know a great p4 tutorial that goes over this that'd be great, theres a ton out there that vary in flow.

#

Oo let me look that up

pulsar parcel
#

Like the top pin in this channel

upper grotto
#

No, that would be too obvious of an answer

#

I was actually just flipping through that when looking for robomerge

#

Thanks @pulsar parcel

pseudo granite
#

Is there any functionality within perforce P4V to auto "get from latest"?

arctic hornet
#

What do you mean “get from latest”…. Like to get latest revision of all files in workspace/folder?

polar mulch
#

UGS has an automated sync/build/etc that you can set for before you reach your workstation

outer kiln
#

using svn , and did tortoisesvn import , to get project into repo, started working great, but now after a hour plus, seems stuck on committing transaction... , what can be done ??

long mural
#

Don't use svn? Svn is really bad for unreal

balmy wraith
#

(i haven't used this before fwiw so it might be different to what you are expecting, it just sounds like it does what you want. Do some tests with it to be sure.)

#

If you want to only sync specific directories then your best bet is to either :

  • Make a .bat file that runs p4 sync "//depot/path/to/sync/..."
    idk exactly how to get it to automatically trigger the bat file at regular intervals but I am sure it can be done.

  • Or as someone mentioned above, look into UGS but setting that up might be a bit overkill if this is a solo project/very small scale team. P4V always worked just fine for me and my brother.

hybrid stream
#

Hey guys a friend of mine and I are trying since a few weeks to set up our perforce conection, we got a google cloud server but we dont know exactly what information we need to put in for perforce to find the server. what do we need to do, to set up the cloud server corectly? is a VM-Instance required or does it work also otherwise becasue as far as we are awware, we need to pay 25USD per month to use it. Is anyone willing to help us out for like 15min and explain it to us? would be very apreciated 🙂

#

sry this is our first time doing this and its a bit overwhelming ^^'

ocean anvil
hybrid stream
#

ok i see we didnt get any of these 2 because we didnt know if its the right way to do so. because we thought we get us a google cloud and pay as we grow and we'll get some sort of ID for the server which we could use to link perforce with it. so we do have to get us a Compute google cloud server, with an VM- Instance (if yes which one will be the most cost efficient?) to get the IP to put into the PV4 Connection to enable Source Control. And if there are any other steps after that, that we yet dont know about?
Sry for all the noob questions, we just kinda need a workflow, which we can follow x)

ocean anvil
# hybrid stream ok i see we didnt get any of these 2 because we didnt know if its the right way...

you'd have to get a VM instance and remote into it (or some providers allow you to access a console directly without having to remote into the server) from where you download and install the perforce server. during the server set up (which is easiest to do by following a guide) you set all your settings as desired and u can use the public IP of the server in your perforce client to connect to your perforce server.

#

i'd honestly probably not go with a google compute server as i'm pretty sure there are better alternatives, but i personally can't tell you much about that because i host my perforce on a self owned server.

#

if you have never set up perforce before and u're totally new to the entire thing i'd try just installing it on ur own pc and getting it running and playing with the settings etc. first. in which case you can just use localhost:1666 as the ip address (you won't be able to connect to it across the internet without setting up port forwarding on ur router or using something like tailscale)

#

other people should be able to advice you better on paid hosting options. alot of people tend to go with AWS but AWS can be confusing and potentially expensive if you are unfamiliar with their ecosystem.

hybrid stream
#

ok thank you for your friendly and detailed answers. we already did try stuff out with perforce and followed a guide. the last step is just to connect us now both. i think we will figure out what AWS and Azure can provide to us. i probably will get back with other noob questions about it x)

drifting epoch
#

Hey! I was able to increase my droplet size, im running a p4server but in p4admin it shows that the new size allocation hasnt been added. Im having a hard time finding tutorials on how to add this new volume size into my p4, can anyone help?

woven sluice
drifting epoch
woven sluice
#

some of the steps look the same as what i use for ubuntu

drifting epoch
drifting epoch
#

i am now unable to connect to my p4, fucking great

drifting epoch
#

okay my p4 no longer has an ip??

tame current
#

I'm having some horrible time migrating a large unreal repo to gittea, felt I needed to share

cyan jay
#

Thoughts and prayers 🙏

ocean anvil
drifting epoch
indigo geyser
# hybrid stream ok i see we didnt get any of these 2 because we didnt know if its the right way...

I'll be honest, if this is your first foray, it depends on what you need. I would probably lean into the slightly awful offerings of Assembla to avoid the mountain of things you need to setup / worry about with a perforce server.

  1. Authoritative server - you should probably have a backup system ready to go to improve resiliency. Setting that up from Day 1 is another "I hope we did this well" process to protect data in the event of catastrophe
  2. Custom cloud server management - this turns out to be a significant overhead usually (see below!)
  3. Authentication / Authorization - I don't know if you have any needs to link into existing identity provider but this is some esoteric stuff to grok on the perforce side. If not, you can probably get away with their built-in user DB.
  4. Security - Using a trusted service like Assembla (which admittedly isn't great) avoids some of the issues here. Assembla doesn't give you any IP whitelist (if you need VPN) gaurantees out of the box with their cheap offering>
  5. Multi-depot - If you intend to setup the best practices method to merge unreal upgrades into your streams, Assembla straight up disallows this because you cannot setup remote depots (so thats a PRO for a self-hosted)
  6. Licensing - Figuring all that stuff out with P4 team is surely another pain point you can reduce if you use Assembla.
  7. Cloud Data In/Out Costs - These can be HUGE if you're not careful. If you have many team members that are syncing 10's of gbs consistently, these costs will creep up on you. Especially if you have a load balancer (recommended to protect server IP) between end user and the server itself.
  8. Cloud drive costs - These can get crazy too. I know on AWS, GP3 volume at 4tb or so ends up being like $300 a month (4000gb * $0.08)
    Overall - Assembla might work well for you, it is definitely slower bandwidth offering than a self-hosted where you control the power of the VM. However, having maintained various git servers + perforce for teams, it is a full time job for awhile and then it always lurks in the background.
#

Oh.. and if you need some form of CI/CD, you'll need something like Jenkins (more fun!) or TeamCity (SaaS costs) to do builds.

outer kiln
#

where is git setup source control on doc page ue5.3,can't find

outer kiln
#

?

#

I thojught this channel was for source control

#

but alright 😉

wide dagger
#

hi maybe a stupid question but i had the option to add a gitignore file and add git lfs in the beginning and also don t see how i can use my ssh key to comnect my repo from gitlab in there

outer kiln
#

unlesss you are far in, just delete .git in project folder

wide dagger
#

could also use git init to make it locally and then push it but the thing im worried about is my gitignore file and lfs

outer kiln
#

then you will see full options again

#

I had the same problem, and thats what I had to do, I wasn't far in at all so...

wide dagger
#

i don t see a .git folder 😅

outer kiln
#

git init < in project folder

#

thats weird, the top tho is cut off

#

to get that far, you hd to have done git init, at least from UE ui for SC

wide dagger
#

but there is none in there tried to base it on a repo from gitlab 🤔

outer kiln
#

ah no wonder

#

can't advise,never done that.

#

but if its already there on gitlab, you should't lose anything removing from local and starting over, then do git again from UE git UI

#

only if its all still there in gitlab

#

as I recall.clone is supposed to do that ?

#

no matter, removing git inside project folder and doing over will get you the .git stuff

#

imho, backup first@@@@

#

always that before strawying ahead :))

wide dagger
outer kiln
#

ok then you should be good

#

reverse git stuff and just redo in ue SC UI

#

thjen it will ask all those other things you are talking abouyt

#

I know, it did here.

#

ttyl

wide dagger
#

done 🙂 restarted the engine that reseted it

#

now i will push the repo locally to gitlab ig

silver token
wide dagger
#

Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitattributes
new file: .gitignore
new file: Config/DefaultEditor.ini
new file: Config/DefaultEditorPerProjectUserSettings.ini
new file: Config/DefaultEditorSettings.ini
new file: Config/DefaultEngine.ini
new file: Config/DefaultGame.ini
new file: Config/DefaultInput.ini
new file: MyProject.uproject
new file: README.md
new file: Source/.idea/.gitignore
new file: Source/.idea/.idea.Source.dir/.idea/encodings.xml
new file: Source/.idea/.idea.Source.dir/.idea/indexLayout.xml
new file: Source/.idea/.idea.Source.dir/.idea/projectSettingsUpdater.xml
new file: Source/.idea/.idea.Source.dir/.idea/workspace.xml
new file: Source/.idea/encodings.xml
new file: Source/.idea/indexLayout.xml
new file: Source/MyProject.Target.cs
new file: Source/MyProject/MyProject.Build.cs
new file: Source/MyProject/MyProject.cpp
new file: Source/MyProject/MyProject.h

does this look ok to be commited?

#

excluded my game files cuz otherwise couldn t send it

ocean anvil
mellow hinge
#

Could I pay someone like $20 to walk me through setting up source control for my project? It's a pretty large project at this point and I need to not just have a shitty google drive backup...

pulsar parcel
#

#ue5-general message (links to a specific message) no transaction required, unless you want to setup P4 which is a bit more manual

tame current
#

If it’s a large project and currently you’re on google drive there’s really nothing to lose by giving diversion a try, it’s very easy to set up, they have unreal integration and should be free unless your project is really really huge

pulsar parcel
#

Their TOS be like: we're not a backup service so you're on your own making backups, also there is no offsite backup tool

#

ADO repos is still the best free offering for a Git remote

wide dagger
#

how can i check if my
works without pushing?

wide dagger
#

git lfs ls-files

#

found it

mint mountain
#

hi. since a couple of days submitting changed files to Perforce no longer reset them to read-only permission. already checked client settings and typemap strings, but nothing helped

hoary wren
#

What is the best practice around where to store the source art files in version control before they're imported into UE? I've heard either:

  1. two depots, one for art, one for the game project. Potentially multiple streams in each.
  2. one depot, multiple streams.

Do folks here have advice on what might be best?

hoary wren
#

Here's what ChatGPT tells me, which I'm not sure if is a total hallucination because often it's not amazing at anything perforce-related...

teal sail
hoary wren
tranquil tiger
#

Does anyone know if Helix Swarm supports comments / reviewing for Blueprint files?

pulsar parcel
#

Well you can create a review out of any CL, but as for viewing the BP logic on the web, no

#

UE has a review tool that integrates with Swarm

tranquil tiger
#

So if I leave a review in the review tool it should show in the swarm UI? or some type of notification that I left a comment? Sorry i'm putting it togther right now and cant really poke around yet

silver token
unreal mirage
#

Is it possible to make sure that my OFPA files are not getting larger than 50MB?
Im using git as source control but i cant upload them as it says git's recommended file size shouldnt be larger than 50MB

arctic hornet
#

ofpa files in general shouldn't be super large since they usually "just" contain the actor metadata etc. that are usually stored inside the main map file if ofpa is not enabled...

#

and you can't control the size of those files as it's fully up to unreal what it does with it

indigo geyser
unreal mirage
#

basically i just enabled world partitioning and it got enabled automatically

arctic hornet
#

there's not much you can change regarding the setup, it more likely just means that you have something weird in your actors that takes a lot of space inside the OFPA file.

#

it could be some dynamic stuff like if you have dynamically constructed mesh or something like that, data such as this is stored inside the OFPA file together with the the actor package. That's kinda the only thing that would explain that large of a file size.

#

Although could be some things like world partition minimap etc...

#

Either way, there's sadly nothing much you can do about regarding the file size itself

unreal mirage
unreal mirage
arctic hornet
#

that wouldn't be it, if the texture is an asset it's stored inside regular uasset file

#

we're talking only about stuff that isn't directly an asset in content browser (i.e. the actors etc...)

unreal mirage
#

the map itself is just a blockout map

arctic hornet
#

not much really

unreal mirage
#

nothing too crazy i thought

arctic hornet
#

the world partition minimap is the only thing that comes to mind

unreal mirage
#

well i do have that one

unreal mirage
#

but thats it

arctic hornet
#

every actor is it's own file and blueprint generally shouldn't take that much disk space as bulk of the data is stored in regular asset files.

#

how many external actors are above 50 MBs?

unreal mirage
#

just 3

#

those are between 60 MB and 90MB

arctic hornet
#

ok, so at least one of them is the minimap itself and the other two I'm unsure

#

could be hlods...

unreal mirage
#

i have a landscape that has thousands of those files

arctic hornet
#

you can't do much about HLODs, but you can delete the minimap texture - there's a button somewhere in editor to do it

unreal mirage
arctic hornet
#

either way... a TL;DR is... you can't do much about the file size.

unreal mirage
#

hm

#

so on paper if i leave it as it is, is there any way to push files larger than 50 MB with git?

arctic hornet
#

I haven't used git in about 10 years, so I'm not sure... depends on your provider. you can set up git-lfs which is intended for large file storage etc... but as I've said, I'm not git expert, so I'm unable to help you more than this.

unreal mirage
#

alright i see, but thank you anyway for your help 🙏🏻

hoary wren
silver token
# hoary wren Nice! Is there a reason to prefer one or the other, as far as you know?

The importing art content feels more natural to me, but I'm an engineer so maybe I'm biased towards that being the default.
However, when you start thinking about any of the other streams you might make from mainline (releases, features, integrations, etc) the default feels like a stream without the art content. And you can map the art content in if it's needed.
In our case we don't have it mapped into every stream because artists don't work in any of them except for mainline. So only mainline has a virtual stream that maps in the art source stream.

hoary lichen
#

Hey guys, I'm working on a project and We have several branches for different fields like art, animation.. etc. I'm handling the programming field and whenever I add some stuff to a blueprint class and push the changes to main branch, the changes are not pushed there for Blueprints. any Idea why that happens ? my c++ files are being updated just fine and main branch is getting the changes after I merge my branch.

outer kiln
ocean anvil
outer kiln
#

I know yup

#

I suppose a comedy of errors, you referred to my post where I asked isn't thisfor souce control (later seeing the link was a anser in a different channel), then you said 'it is ? " 😉

#

no matter git is working here.

pseudo granite
#

apparently perforce cant manage folders that have utf-8 characters in their name?
I renamed the folders and I'm still getting the errors, what do I do now.

(Its as if it cant tell I have renamed all of them)

arctic hornet
pseudo granite
arctic hornet
#

It’s server side configurable and iirc it can only be set during installation and can’t be changed afterwards

#

I’ve not touched this part of configuration for about five years, so I’m quite rusty

pseudo granite
arctic hornet
#

No, the “server” that’s ran by P4D … I.e all the databases etc… but there might be one time and one way upgrade path from ascii to unicode… I’m sadly not by the computer so I can’t check the documentation right now

woven sluice
pseudo granite
silver token
vapid hatch
#

@unreal mirage Diversion has the ability to upload files above 50 MB with out any additional setup, or cost.

wide dagger
pulsar parcel
#

You don't need to pay more for LFS on ADO

#

You do on GitHub, there it's a rip off

night warren
#

Hello, how to upgrade project that plugged to git to new engine version? I have project on 5.3 engine and want to move to 5.5.

rustic raven
pulsar parcel
#

More context would be needed. Is this a source build or something?

wide raven
# night warren Hello, how to upgrade project that plugged to git to new engine version? I have ...

My usual process for launcher engine:

  • Fetch and replace all new plugin versions from store or with Legendary ( https://github.com/derrod/legendary )
  • Right-click .uproject and Switch engine.
  • If c++ project, clean Binaries and Intermediate folders. Rebuild with IDE. Fix any arising compilation issues.
  • Once able to run editor, smoke test for breakages in running game.
  • If you deem the game to be working well enough at this point, time to commit changes to mainline

Depending on your team size and plan, you might want to fix any showstoppers before deploying all the changes to mainline. Remember that any .uasset files saved in a new engine version will NOT work in old version.

GitHub

Legendary - A free and open-source replacement for the Epic Games Launcher - derrod/legendary

#

Regarding plugins, it seems that they don't mind what folder name they are in, so I have started considering keeping them in clearly named folders like PluginX_53, PluginX_54 etc ( deleting the old ones and adding the new, not renaming ) to make the transition between plugin versions explicit.

south flint
#

Hey all. The way our current title is set up, we have a lot of "main" levels comprised of "sub" levels, and we use the "Levels" window to toggle which we currently have loaded in the editor to work on. Problem is, that toggling visibility of a level on/off makes the main level file dirty. Does anyone know if it's possible to:

  • Prevent toggling level visibility making the main level file dirty?
  • Or, if not, prevent it from ever being submitted to perforce by designers (easily)?
arctic hornet
south flint
ocean anvil
arctic hornet
#

Though you could keep everything in sublevels and then just have few chosen ones that have write access to the level

ocean anvil
#

unless i am not understanding the problem correctly

arctic hornet
#

True that, but it all depends whether persistent is just a container for sublevels… or whether there are some assets in it that artists need to change

#

A tldr is: when changing the visibility of sublevels inside the Levels window it causes invalidation of the parent level, which is because the visibility is persisted inside that main level….

And screwdriver ideally doesn’t want it to cause the invalidation… which isn’t possible without engine changes… or a way to prevent the submission of that level… which can be done perforce level as you’ve said… unless they also need to modify said level often which would be impossible if submits are not allowed

woven sluice
#

Have people make their own copy of the master level so it doesn't matter mindblown

hoary wren
#

Could use advice. We're running into the issue of multiple people needing to lock the player character blueprint, which has a lot of functionality in it. Short of making sure we perfectly coordinate work so that two people never need to touch the same blueprint, what other options should we explore to make the VCS pains easier here? I've heard:

  • split up your beefier bps more, e.g. using components
  • move more logic into cpp where it can be actually merged
  • maybe have local copies of those files that you keep working with and then very carefully copy and paste logic from, but that seems frought with its own problems
silver token
# hoary wren Could use advice. We're running into the issue of multiple people needing to loc...

Yeah, those first two are your best options. Using components, moving things out into other actors/subsystems. Sounds like maybe your controller is doing too many different things, perhaps some of them should be done by a different "thing".
The third option is okay for very small changes, like adding a function, deleting a node, etc. But should probably be avoided for anything of sufficient complexity.

hoary wren
pulsar parcel
#

using data assets for static data also helps

arctic hornet
# hoary wren Could use advice. We're running into the issue of multiple people needing to loc...

Modular approach is not only good for collaboration, but it also helps with separating the concerns and can help reduce memory load in some cases, since if blueprint talks to another blueprint it needs to have the other blueprint type loaded in memory so it can use the type (for example if trigger checks for BP_RandomClass) the hypothetical BP_Trigger needs to laod the BP_RandomClass into memory even if that class isn't used anywhere else... so having lightweight classes helps there (although I'd personally use interfaces rather than accessing blueprint types directly) and I will stop here since this is kinda offtopic for this channel 😄

fiery pelican
#

I'm getting an odd issue I haven't ran into before. The BP_BattleManager and BP_LevelManager listed here are shown as checked out... but these have been deleted entirely. For some reason, perforce isn't recognizing that they've been deleted? It seems like it's still trying to check them back in when I try to submit the changelist, and then it fails. Any ideas what I do here?

#

Not sure what the problem was, but I was able to revert the two assets, submit the changelist and then remove them again.

arctic hornet
#

unreal can get confused sometimes if you do conflicting operations, like removing an asset and then adding new one with the same name etc... so this could be similar case

wheat estuary
#

Hey all. I'm new to source control on a personal project. Using diversion between my laptop and desktop. I'm running into an issue where UE saves "changes" to assets that weren't changed. There is no difference in the assets but it will have an extra few KBs and it just dirties up my source control because they show up as updated. How do I diagnose this. Is there something I need to watch out for? I'm on 5.1 TIA!

jolly fog
#

so im broke af and working on a potato (integrated graphics 16gb ram)

is there any way to get decent source control for free?

i know perforce helix core is free but its the non-cloud version, and I need to either run it on aws/azure/googlecloud/digitalocean
but from what im seeing all of them are paid

is it possible to run it locally on the same device im programming on? or is it resource intensive

wheat estuary
jolly fog
arctic hornet
#

you could also go with Git with git+lfs... I'm not sure how hard it is to set up etc... but it's decent alternative

#

and iirc if you host in Azure Dev Ops you get lfs for free so you can easily fit your whole unreal engine project there

pulsar parcel
#

that is the way

#

I don't think Diversion has done anything to address the sketchiness of "we're not a backup service"

ocean anvil
ocean anvil
pulsar parcel
#

well yeah, that's why it's problematic, it's cloud-only closed source software with no direct access to data

#

at least with the free git options, your remote is a redundant copy

ornate matrix
#

how can i ignore a specific line in the uproject file ?

#

i would like to ignore the engine association

wind gazelle
ornate matrix
#

sad

torn needle
#

any of you wonderful peeps use subversion as source control?

#

am I being a fool here? Missing an option? Or a secret ignore file that unreal uses

#

also is it me or is the "view changes" option in the revision control menu just not working in unreal for svn

#

like I can't even set changelists for assets in unreal

#

I know the plugin hasn't been worked on for a year, but these seem like pretty important features

wide raven
modern tulip
pulsar parcel
#

yes but like I said, with Git it's a DVCS so a remote is a redundant copy

#

It's not reliant on your opaque cloud secret sauce

modern tulip
#

We already updated the ToS recently due to feedback, which I'm grateful for! See attached screenshot for the recent update (the typo with "You" was fixed)

modern tulip
# pulsar parcel yes but like I said, with Git it's a DVCS so a remote is a redundant copy

I totally understand that and there's definitely value in having multiple remotes. I try to help git users here as well. In terms of backup, you can always get a snapshot from any commit and back it up elsewhere, you have access to the data, just not the underlying data structures, just like with Google Docs. We were even able to recover uncommitted data for users upon their request, something that you can't do with git (thanks to Diversion always syncing in the background). I hope you can see the value in a version control that is easy to setup and use (and has a responsive Discord server for support), for people that don't know or want to setup Git, LFS, multiple remotes etc. I guess it's a matter of taste and requirements, there's no one recommendation that fits everyone

strong sigil
#

How does the uncommitted data work? Surely that is a massive amount of storage that’s needed to host that?

modern tulip
ocean anvil
# modern tulip I totally understand that and there's definitely value in having multiple remote...

I think what is great about diversion is also what kills it for me.
Now let me first start by mentioning i have not actively used diversion so i'm basing this on what i have gathered from my own research as well as from the experience of others.

Its a very convenience first approach to source control, but at what cost? you have very little to no control over your data and no insight into what happens on the back end.
No redundancy as far as my own personal access is concerned. what i mean by that is if your companies servers suddenly go poof tomorrow, no matter the cause. there is a single point of failure for my source control.
With both git and perforce i have a raw copy of all the latest data. with a local hosted perforce server and automated offsite backups and the local data on multiple clients it'd have to be a real bad day on earth to lose everything.
You also have full control over all your back ups, how they are stored and where and they are somewhat trivial to automate.
With diversion on the other hand i entrust everything to you to manage and operate my data appropriately, and i cannot verify anything even if i wanted to.
Which also brings me to the first time i found out about diversion and read through the TOS where i was not filled with great confidence as has been brought up multiple times here so i won't regurgitate the same.
But i will mention that it left me with a sour taste, and while i am in favor of the changes to the TOS since then. It would take quite a bit more for you to gain my trust now.
Time has proven again and again that unfortunately a zero trust policy is basically a requirement in most industries, game dev is certainly no exception so if i can't access it myself, and i don't trust your company enough to where i would blindly hand over my data (which is a high bar). than the result is that i would never use your product, if i would not use your product i would also not recommend others to do so.

#

Diversion is probably great for some, it seems to be very hands off like you would want for people who either don't want to or can't handle their own data management and/or infrastructure.
But in my honest and personal opinion even just some of the points above are enough to be a dealbreaker.

ocean anvil
#

On a more personal note i do also have some disagreements with your manner of presenting yourself and therefor indirectly the way diversion is represented.
let me start that off by mentioning that i do think it is positive for you to be personally active and directly involved with your potential client base, and assisting them where possible even if not always directly for your own product.
This being said i think the self promotion of the product within this discord lies on the edge, as this is a source control related channel it is certainly related, but if every person who made plugins or any other third party tool for UE was in this discord mentioning their own product and referring people to it this could certainly become problematic, i am certainly no mod and i am not willing to go as far as to say it violates the rules. at the worst it conflicts with the rule against self promotion, at the best it falls in a gray area i feel like.
What does however directly violate the rules is sending unsolicited DM's which you have sent me in response to negative feedback to your product.
I understand your concern for negative feedback and the desire to resolve potential problems people might have but the rules are there for a reason, and this is no exception.

modern tulip
# ocean anvil Diversion is probably great for some, it seems to be very hands off like you wou...

I appreciate the elaborate feedback! Re the dm, apologies if my message disturbed you, I wanted to make sure if there is an issue with the product itself, as quality and user satisfaction is important to me. I didn’t see a rule against that, but again as I see it bothered you please accept my apology. Re the promotion, I was always clear with disclosures and only suggested it when the person asking was clearly looking for a hands off/free solution, and after including other alternatives as well. The equivalent is probably when someone asks “is there a plugin that does X?” and someone who created just that would answer “yes I made the plugin Y that does X”, as opposed to a random “checkout my plugin Y” without anyone asking. But of course if this is against the rules or unacceptable by the mods I will refrain from it.
Re the personal access concern, would an export of all commit patches to a destination of your choice address this concern for you?

ocean anvil
# modern tulip I appreciate the elaborate feedback! Re the dm, apologies if my message disturbe...

In regards to the self promotion. like i said i wouldn't go as far as to outright say it violates the rules, i personally feel like its in a bit of a gray area and would leave it up to a mod to judge it further then what i stated which is that i could see it being problematic if everyone approached it the same way. and if a mod clear it, i have no qualms.

to the DM, i get unsolicited DM's daily, once every couple weeks i trash all of them its more of a hassle than a disturbance, i just don't like people who are part of the problem. all you gotta do is ask if you can send a DM and all is well.

As far as the commit export. without the software to be able to use and recreate the patches in a versioned manner this would only resolve part of the problem. IE with perforce as long as i have a back up of the server files (checkpoint, journal and versioned files) i can reconstruct and use my full version history from the data i have backed up.
while i would not consider this a requirement for all version control softwares, it is a personal requirement for me.
I would counter myself somewhat with stating that being able to easily back up all commit patches to a location of my choosing would certainly aid in the level of trust i would have in the product. bonus points if this could be automated on a schedule though i'm not sure how that would work given the current set up.
Really the crux of the problem is if diversion HQ gets hit by a meteor tomorrow i'd like to be certain i can keep working on my project without more than a couple days worth of data loss and while maintaining functional version history.

TLDR; would it address the concern? yes.
Would it be enough for me to reconsider diversion? no.

modern tulip
ocean anvil
#

on a sidenote, what i wasn't sure about in my initial feedback is whether diversion support automatic file locking/checking out assets to prevent people overwriting each others work.
with UE's binary file formats i would personally consider this essential i noticed that the product description states it "warns you" prior to creating a merge conflict.
But this to me reads more like you could be working on something and only by the end find out that there could be a conflict when you attempt to commit, rather then when you initially start to modify something.

modern tulip
ocean anvil
#

though i do need the option to disable this checkbox across the entire project.

#

having a checkbox like that can be convenient, but it makes it far too likely for people to just press "okay" and ignore the warning imo.

#

tbf people ignore the warning sometimes regardless but that doesn't mean i want to make it easier xD

modern tulip
arctic hornet
#

Yeah, never let people remember significant changes such as this... on Titan we've had plenty people check "automatically check out files" and people suddenly found out that they had half the map checked out, because some freak script caused invalidation on half of the map... and since we've dealt primarily with artists on the project who were not tech-savy (which I believe will have significant overlap with your target demographics) we're not able to easily undo the changes due to "too many clicks" as they put it

#

if you still want it to be there, I'd probably offload it to per-user-project settings and/or simply to some INI files since that would make it big enough barrier for general userbase to not find it, but also give the option to power-users if they really waented it

silent minnow
#

Hello, I'm trying to migrate my p4 server from one machine to another, but I'm having some problems.

Both machines run on ubuntu 20 which should have the same setup, i.e. fresh installation and just same p4d version installed on them

Following this guide https://portal.perforce.com/s/article/2538, I installed the same p4d on my new machine, and successfully verified that the tracked files on the old machine are correct. After I stopped the p4 server on the old machine, I moved my /perforce_depot/depots to the new machine using rsync. I shouldn't have anything else related to depots that I'm supposed to transfer over.

If I'm not mistaken, the guide is over for me, because all they do after transferring files is related to case and line-endings related problems, so I started the p4 server on the new machine, but it's missing the users I used for the depot. I would assume that they would be present, but they aren't.

I'm trying to use p4v, and, if I use the new IP, clicking on Browse for the user field results into a window saying No Items Available.

Creating a test one doesn't seem to help either. If I open the available depots, the list is empty, even though my /perforce_depot/depot is not empty, it contains everything I had on the old machine.

Am I missing something? Why the users are absent and the depots are unavailable?

arctic hornet
#

Perforce has 2 kinds of files… bulk data and the DB

#

Db holds the metadata about everything and everyone… and is usually migrated by making journal checkpoint and restoring from that… combined with the rsync’d copy of the bulk data you should have full server

silent minnow
modern tulip
jagged spear
#

I'm looking to create a very simple local Windows Perforce server that only I will use, just to better keep track of my version changes on personal projects.

I normally work off of Linux AWS servers with more steps involved in maintenance, but it seems pretty simple for me to just installed Helix Core Server and P4v both on my Windows machine? Just curious if there's anything I'm missing after reading the steps that seem to basically require installing both applications and running them.

arctic hornet
#

Yes, you need to install both pretty much, since p4 and P4V are just clients meanwhile p4d is the server

#

You could potentially go with DVCS which is built in to P4V and you wouldn’t need to install the server, but as I’ve never used it personally I’m not sure about its performance and compatibility

jagged spear
#

Oh thanks! I wasn't aware of that (DVCS built into P4V) - it does sound designed to be exactly what I need. But yeah, might want to test it out on something low stakes before I run a current project with it.

#

These projects will always be self-contained, so compatibility isn't a concern, but yeah, would probably want to test to make sure there are no gotcha's or differences to it.

sour vine
#

hello

#

I just did a wonderful windows update and got this error when trying to log back into perforce.

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

#

How do I check p4port?

#

weeeeird. I rebooted my pc and everything is fine!

silver token
pseudo granite
#

I have been using Perforce on a dedicated home server for a while and ended up port forwarding the perforce port so that I can use my Public IP address:1666 and connect to the repository remotely so that I can work away from home.

But I have been told this is unsafe because my PC and IP was made vulnerable by doing the port forward.

was port forwarding Perforce unsafe for my network?

arctic hornet
#

Well, yes... and.... no...

#

As always, having nothing exposed is the most secure way...

#

if you expose something to the internet you're making the potential risk higher, but that's true for anything... even http server etc...

#

and afaik perforce doesn't have any known security vulnerabilities if you're on sufficiently new version of p4d (which I'd recommend to be on anyways)

#
  • perforce isn't primary target of attacks anyways, people usually try RDP or SSH or something that would give them RCE (Remote Code Execution) - or they just do plain old social engineering - ... and perforce is usually just a side-product of game studio hacks
#

TL;DR: Yes, there is certain risk... and No... it's highly unlikely you'll be targetted in the first place

#

For example I've been hosting perforce server for our studio and myself personally for 5+ years over public internet from my home IP address without single incident

wide raven
arctic hornet
#

I do have log audits on any connection made to my network, what ports etc... so I'm pretty sure no incidents happened, but yeah... as far as I know

#

and as you've said, the bigger you are, the higher the risk... but if it's personal perforce server hosted for you only, it doesn't pose any significantly higher or lower risk than any hosting other service

pseudo granite
ocean anvil
#

no, u can use it as standalone.

#

it will basically make any device you install it on(and verify) treat eachother as if on a local network but over an encrypted connection. without the need to set up port forwarding or expose any ports.

#

you can set it up so connecting requires 2FA using a 2FA method of your choosing.

#

if you want to get more advanced you can set very strict access rules between devices and different users etc. but if you are just using it to connect to perforce remotely just the default stuff is already way safer than just connecting over an open port over the internet without encryption.

lucid stream
#

"p4 bgtask" is a fun command.

frank bronze
#

Hey All.
Hope your doing well?

I wanted to find out from pipeline peeps at game studios how they are managing DCC file storage. Specifically how they are handling Remote workers ?
Our team is fully remote and currently we are working with Git and Git LFS but I am starting to do some testing and I am having big issues with Houdini files as they get big pretty quick.

I am thinking GDrive but I want the history of files.

The Elephant in the room is Perforce I know, but We dont have that setup and not sure we will for a while.

I would just like some insight and thoughts from another perspective, Thanks in advance 🙂

merry verge
#

No one in their right mind uses gdrive/onedrive/dropbox/etc in a studio environment for asset storage. You've already named the two most common solutions, though you could add SVN to the list if you really want to.

pulsar parcel
#

There even a VFS solution for P4 where it sort of mimicks what OneDrive does

#

Which might be an easy one for source art

merry verge
#

bad idea for in-engine assets though - there's an explicit warning against using VFS solutions for uassets due to the asset registry scanning all asset headers on startup 🙃

#

for source files it's fine

silver token
#

Epic's rolled their own VFS for assets though. Get enough meta data for the asset registry and use the DCC to actually run the game/editor with until you make a change (or something like that)

merry verge
#

Not really a VFS, more like they have a mode that stores bulk data for assets in separate files and only retrieves it from source control (or a cache) if the platform-specific data in your DDC isn't enough.
Problem is it only works on specific types of assets, and only uassets - no source files.

#

Still a clever solution, but it's not an all-encompassing one and it's also not simple - you need a shared DDC and multiple layers of cache to get the most out of it. Especially for a remote team.

waxen glade
#

I have a UE project in BitBucket repository that is 600MB in LFS and 2MB in normal files. The amount of files is around 4k.
Whenever I (or my co-workers) try to clone the repo, git freezes at either "Updating files" or "Filtering content". One coworker succeeded in pulling the repo and sent it to me, after which I tried doing "git status" inside the repo. That froze at "Refresh index".
Has anyone had that happen to them?
Is my repository too large?

#

What I've tried so far is remaking the repository in BitBucket, Github, and remaking while redirecting the LFS storage to a local folder. These didn't help, so I think the problem is completely local. git status should be a local operation after all. Reinstalling Git didn't help me or my co-workers either. Git freezes always at varying percents of the respective processes (like Refresh index: 9% (384/4260) and Refresh index: 5% (213/4260)).

timid hound
#

Running into an error in perforce P4V where I am trying to resolve errors and accept a source file but saying "failed to rename, cannot create a file when that file already exists." So how am I suppose to resolve the error if it doesn't let me accept the original source?

bleak hedge
#

Okay, I'm on the struggle buss here. I've never worked with a team on a UE5 project. How do I set it up so my team can work on the project remotely and at the same time? Do I create different versions and merge, or is there a more streamlined (better) way?

waxen glade
#

@bleak hedge
Simplest way is to divide a level into sublevels, and just not work on same sublevels at the same time. Two people working on a single asset at the same time is not possible afaik.
You might want to look into OFPA (one file per actor) and world partitions as well

arctic hornet
#

OFPA and world partition can work separately these days (though designed to be used with world partition)… just click “use external actors” in world settings or levels window etc… and each actor will become it’s own file, so anyone editing one actor will checkout only that actor rather than whole level

#

(During cooking everything gets packed back into single file so there’s no performance drop in game because of this)

#

But as MMatias also said, use sublevels if you’re not using world partition… it will help with performance too, since you can selectively load and unload those sublevels

flint sierra
#

Edit 01
As a beginner I decided not to arm twist the gitignore file.
Instead I went to the repo Add File > Create New File > typed forward slash / > type the directory name > typed a dummy file name and added the file. Then I upped the file i wanted from my local repo
End Edit 01

How do I include the ThirdParty folder in my local folder from the gitignore file.
for e.g my project folder has
ThirdParty > YJMagicLib

             > Libraries 

I want to include the folders and the files within it in my repo. As of now only the Includes folder is being uploaded

slate cosmos
#

I accidently checked "All" when stashing in source tree and it wrecked my project. PSA Don't do that. Still trying to recover it over an hour now.

crude cedar
#

all dll files in perforce are set to read only how do i fix it? i have to uncheck read only manually to compile

wide raven
crude cedar
round iris
#

Let's say I want to increment my project (0.0.1, 0.0.2, etc)
Should it be a new Repository for each, or a new branch?

woven sluice
woven sluice
wide raven
# round iris Let's say I want to increment my project (0.0.1, 0.0.2, etc) Should it be a new ...

IMO: None of the above. This is one way to look at it:

DefaultGame.ini : ProjectVersion should have Major.Minor.(Patch optional) version number for example 1.35 ( add: a common format is also major.minor.patch : 5.4.4 )

Version Control CL number can be used as the patch number if you don't use it for that, so if we are at CL 9872 : the project version number you embed into each build becomes 1.35.9872
If you prefer to use patch, can format it differently, maybe 5.4.4:9872 or whatever

Each time you release an update into the wild, you increment version, usually just the Minor version, Major when you really want to show a change, usually just from 0 ( beta ) to 1 ( live ).

For version control, you Tag at each release.

lime nova
#

anyone know how to stop this spam? none of these directories exist and are not in my source control at all. using git

sharp drum
#

guys, I have some strange issue with github lately, when I try to push, first it loads like forever and then says:

Pushing to xxxx
Connection to github.com closed by remote host.

what can it possibly be?

Internet works perfectly fine, I tried to turn on/off windows firewall and cloudflare VPN as well. It's sooo annoying :/

I can also open github no problem

jaunty karma
#

I have setup perforce in the cloud and I am having an issue syncing with some files giving me corrupted during transfer but I am not sure why its happening?

cyan jay
jaunty karma
#

I'll double check my typemap

wind gazelle
jaunty karma
#

I've been checking the files that give me corrupted during transfer and they have the right type assigned to them (binary or text) so im confused once again

wide dagger
#

hi

analog tusk
#

Hi Guy's, any idea on how to make brunches in perforce similar to git ?

silver token
# analog tusk Hi Guy's, any idea on how to make brunches in perforce similar to git ?

It depends on how you have perforce setup. Are you using streams? or do you just have a regular depot?
Even then, unreal doesn't really work well with branch based development (due to the binary/unmergeable nature of the assets, especially blueprints). Epic and most studios do trunk based development where everyone is committing to a single depot.
Some branches might get created for releases or large updates like engine upgrades. But they're rarely used for day-to-day development.

wide raven
limber tartan
frank bronze
#

hey all thanks for your input, I have been busy but Caught up now.

@limber tartan I have a Hip file of 1.5Gb which I am working on getting lower.
Its a HF Paint issue which saves the Paint strokes to the Hip file. Converting this over to File caches.

limber tartan
frank bronze
frank bronze
hoary wren
#

Do folks often end up dropping the +l exclusive flag on files like .uasset just so that you can have multiple people check them out with the very explicit expectation that you will clobber one of the submissions intentionally? E.g. you want to try a different version of a .uasset for a play test, but someone else has it already checked out, and you're fine with your short-term changes being overwritten later.

Is dropping exclusivity too footguny to be worth it or do most people live in that world?

silver token
woven sluice
#

you can always make your files writeable without checking them out, no need to bastardize the whole versioning system

#

i mean making them manually writeable without checking out or changing the VCS file type. the editor straight up offers you the option to do so

#

it just means you'll have to spend a few hours (joke: seconds) doing some reconcile work so that you can fix it back to normal later

wide raven
hoary wren
wide raven
#

Also, if you are often faced with this situation, it is likely an indicator that the uasset in question should be broken up into more manageable pieces.

wide raven
woven sluice
#

i do filesystem level permission changes all the time (marking as writeable in Unreal to edit a blueprint for some testing because my teammate has it checked out). it is not footgun city, but you do have to be aware of what you're doing, i wouldn't do more than one or two at a time lest i forget

wide raven
# woven sluice sorry, what? how?

P4V, Workspace View, navigate to any file, Checkout. Even if it is already checked out by other user/s, it will allow a checkout - ( unless maybe your server is configured more tightly than ours ).

We prefer to keep this option open as often somebody may forget a checkout and go on holiday or whatever and we want to be able to get at the file without having to bother admins

#

There really isn't any reason NOT to do it this way ( I think ). Much better to have your changes in Pending than be hidden away from version control.

woven sluice
#

are you not using exclusive checkouts for anything??

#

😄

#

ah, P4 does have a system to permit multiple checkouts... p4 lock... but yeah, exclusive checkout does not permit what you're describing

wide raven
#

Can only do it via P4V

woven sluice
#

nope (not with exclusive checkout, i mean)

wide raven
#

I am not the admin so I don't know how this is set up, but it's how it works for us

woven sluice
#

it is something new to me though so neat

wide raven
#

We get this in Unreal, but P4V just lets me checkout brazenly : )

woven sluice
#

but that sounds stupid and worse to me

#

tbh

wide raven
#

Not at all

#

Much better to have any changes listed in Pending CLs

woven sluice
#

yeah but now either of you can submit it

wide raven
#

rather than just in your head

woven sluice
#

not if you intend to throw them away after

#

but i don't mind reconciling often

wide raven
#
  1. Anybody can submit
  2. Throw away, simple as a revert
#

Well, there may be varying schools of thought, but I am pretty adamant that it is much better to have the knowledge right there in P4V

woven sluice
#

definitely pros and cons each way that i can see

wide raven
#

It remains that this method is not meant to be used willynilly

wide raven
#

Pros

  • checkout is visible in Pending Changelists
  • easily reverted
  • no chance of forgetting what you have been fingering

Cons

  • may be confusing as to who is the True Owner of the checkout ( who should be consulted in an emergency situation )
  • ?
#

Generally speaking I have been keeping an eye on how much people have to 'fight' for checkouts, and if any file is contested more than once a week, it seems to be a clear need for either

  • considering whether the people have too much task area overlap in project management
  • considering whether the bp can be cleaned up so more people can work with it simultaneously
woven sluice
#

FWIW with the new UE5 changes window you don't have to worry that much about "forgetting" these files. it lists them. although that window also sucks ass, because often it lists another 6000 engine assets too.

the biggest nuisance of going readonly with exclusive checkout is just figuring out how to clean the file back to depot state when you're done messing with it crying_laughing unreal and p4v does some really annoying UX stuff on that front... reconcile won't add them to a changelist so you kind of have to go and force get revision or run a clean which can be dangerous

#

anyway, both options maybe valid for Cells... see what works for your team i guess

wide raven
woven sluice
#

studying this more, it's kind of pathetic perforce doesn't have this. this thing is nearly 30 years old. a way to clean only non-checked-out files doesn't seem to exist.

woven sluice
#

i usually end up just leaving the files writeable until my colleague submits and then i clobber. but i'm usually only doing this so that i can like... change a camera arm length setting on a character or something silly for a test

wide raven
#

That still has the side-effect of you being effectively in a different state from mainline, which is not something I would recommend at all... But then I am a bit OCD I guess

woven sluice
#

oh no wait, p4 clean DOES behave that way. it's just that P4V's Clean option doesn't fucking run clean

wide raven
#

huh, I don't think I've ever tried a Clean : )

#

I do run a Reconcile a couple of times a year though

#

time to try it out, let's see if it does anything for me

#

p4 reconcile -f -m -n d:\project...

#

hmm it's a reconcile with a bunch of flags

woven sluice
#

yeah, it's retarded

#

they probably added the real p4 clean command later and didn't want to edit the UI's behavior or something

wide raven
#

yarr

woven sluice
#

so P4V Clean... won't do jack to writeable files which other people have checked out, but p4 clean will reset them while, at least from my test of one or two things, leaving your own checked out files as you have them. time to add p4 clean as a custom nuisance menu tool 4 me i guess.

hoary wasp
#

helloo 🙂
Has anyone any idea why my created sockets keep not being added and when I pull the project on another pc I have to create them again? I use github desktop

wide raven
hoary wasp
wide raven
hoary wren
#

What's the best practice with DefaultEditor.ini? Should it be in VCS? I'm seeing this in Rider when I close the UE editor:

Warning LogObj Ini File '../../../MyGame/Config/DefaultEditor.ini' is read-only and cannot be written to

here and there. Should I maybe use a different set of flags for that file in my p4 typemap?

wide raven
#

everything in config folder

hoary wren
#

Is there a best practice here around how to let the Unreal Editor make necessary changes to the .ini files before checking them out first? Is there an option here to say "please check out those files if you need to modify them, I will later decide if we should submit those changes you made, instead of you failing to make any changes to begin with until I explicitly check out the file"?

wide raven
# hoary wren Is there a best practice here around how to let the Unreal Editor make necessary...

IMO Editors should always checkout the file right away if they need to touch it.

Optimally there should not be a later decision of submitting, beyond a code review. Assumption is that the changes are part of a plan.

If doing prototype stuff, optimally user should still be able to checkout and have lock, but if this is impossible, I would suggest making the changes with a different angle : in a separate file for example, being called with minimal changes from the area that must be left open to development, using a development-feature flag.

#

In any situation where there are big blueprint dreadnoughts with many people wanting to have access to it, it's a warning sign that the area needs a cleanup : aim to split it up into some smaller pieces to better allow concurrent work

#

More on my vision of correct flow with unreal mainline style development, especially as regards work on existing structures:

  • any complex feature rework that breaks a working feature and takes a long time to work on should still be checked in daily.

  • However such work should never break existing functionality if possible.

  • Using feature flags to toggle new work is the correct way here : this has manifold advantages.

  • you always have the old working version as reference

  • you can toggle the old and the new functionality on and off at will

silver token
lime nova
# lime nova

pushing this up again. has anyone run into this?

lime nova
wide raven
runic trail
#

Anyone know why I can only see my own changelists in perforce?

#

is there a way to see other people's as the admin

silver token
vapid walrus
#

hi folks! newbie here with a dumb question – i'm setting up git/perforce (haven't decided yet) for a small team of 3 working on our spare time. We want to have a dedicated server for our game, so I understand we'll need to build the engine from sources?

What's a good way of setting up git/perforce for this?

I've been thinking of using just one, so maybe have a workspace in perforce like:

./our-game/              <- this is the perforce workspace
./our-game/OurGame       <- this is the project
./our-game/UnrealEngine  <- this is the engine

but my god the engine folders are massive (and even more so after we go through the setup/builds on mac/linux/windows)

Any best practices around this that we could borrow? 🙏🏼

runic trail
wide raven
#

perforce might be the way to go for more active source dev though. have to ask for perforce access from epic i believe

short bison
#

I dont know if this is the appropriate space, but I cant upgrade or uninstall horde from my PC

#

Im trying to look up info and the unrealbuild tool just 404s on github

#

Does anyone know how to uninstall horde?

pulsar parcel
short bison
#

I figured out my issue, nvm... haha. I forgot it was in a vm. However it didn't seem to matter because I still seem to have a vulnerability error with .net, even after updating all 3. Looking into it further on my own

#

Ive tried updating rider like 4 times but the update wont stick

short bison
#
pulsar parcel
#

Attempting to upgrade it can cause other issues if using a launcher/installed build, and with a source build, well I guess that's a conflict for when Epic do fix it

sour vine
#

Hello! My PC died 2 days ago and I'm looking for an external solution for my perforce server so the project can keep moving forward if this happens again.
Any recommendations?
Looking for something like an external drive, ideally m.2, with its own ethernet port, so I can easily change between any work stations (from PC to laptop for example) to manage the server..

#

Is there anything like this that anyone here has or is using?

woven sluice
#

little confused because an external drive is a storage device, not a PC, but you're talking about a perforce server. are you looking for something like a NAS that can also run your perforce server?

sour vine
#

I need to be budget friendly, not locked into monthly cloud plan since I'll probably have servers running for the rest of my life haha. Need like 100GB max I think but whatever is available near there is fine too.

woven sluice
#

perforce is an installed, running application

#

for max budget friendly you probably want to keep doing what you're doing, but maybe what you really want is to set up some sort of automated backup of the server to an external drive

#

so that it's feasible to reinstall/continue it if you have a minor loss (obviously doesn't save you from a major loss like fire/flood)

sour vine
#

Right. I'm open to ideas, but I would really like to have the server in its own external component if possible. Another issue with having it on my PC is when I have people uploading their changes or getting latest, really slows me down if I'm gaming or even watching YouTube.

#

If there is an automated way of updating an external copy of the project, that could work too I guess.

woven sluice
#

perforce itself is very lightweight; i would expect to be able to run it locally without really noticing it on a decent development PC. offloading that to another machine is only really going to save you the CPU but it won't affect any bandwidth usage. if you're running out of bandwidth with it operating already, any other in-house solution isn't going to change that.

so yeah, externalizing the server means getting a separate machine for it. this could be a micro PC or an old machine you've donated for science or a NAS. you just have to be careful if you go the NAS route because perforce won't run on any really barebones stuff like cheaper ARM64 CPU NAS's... probably need one with like a celeron or something

#

besides that... perforce has lots of docs about how to do server backups

arctic hornet
woven sluice
#

oh, did not know that, neat

arctic hornet
#

it's since like 2024.01 or last 2023.x release

#

But yeah, as HoJo said... Perforce server is not really resource intensive (pretty much 0 load when just idling) but it can use quite a lot of resources when you'd hammer it - I'm hosting our perforce server on really overkill 48 thread server (though I'm hosting all our production infrastructure there so it's not sitting idle) - but if I do really large submit (as in 300k files - ~200 GB in size) on 10gbps... it can fully saturate the CPU (and network)

but at the same time, for project Titan (the epic ran art jam) we were running master server on m5.2xlarge node (8 vCPUs and 32 gigs of ram) and it handled ~400 active users 24/7 just fine... so unless you're doing something crazy, pretty much anything can run small scale server

What I highly recommend is having fast storage, ideally NVMe based since the faster your drives the faster your response times and in generally the more snappy the server is

teal sail
#

Does anyone here have any insight into using perforce for staging/distributing to test machines for networking stuff?

#

My main concern is many commits are going to be in broken states in order to test them, and that'll dirty up the version history once merged back out of the test stream

arctic hornet
#

in perforce you don't merge whole history (like you do in git) when you merge/integrate you create new revision in the target stream/branch that represents latest state (or other specific revision) and that's it... though I'd personally not ship source code directly to testing... I'd rather instead pre-build the binaries and distribute those in the QA stream (or using other methods of delivery)

#

since it's more efficient to build them once and then distribute rather than building it 15 times on 15 machines

teal sail
hoary wren
#

Is it possible to rename a file and Update Redirector References in the same changelist, or do I have to do it in two passes? Just a quick sanity check, as I suspect the former is possible, but I'm not totally sure, the changelist was showing a bunch of things being deleted in the process that I might not want to delete.

arctic hornet
# hoary wren Is it possible to rename a file and Update Redirector References in the same cha...

In general yes… in some cases it can be little tricky depending on what version control you use (I.e when you remove AssetA and rename AssetB to AssetA perforce doesn’t know what exactly to do since you first told it to delete AssetA and then you changed it to modify etc…) but unless you do weird things like this you’re fine renaming an asset and fixing redirectors right then and there

wide raven
arctic hornet
#

If it's a file that's not been pushed yet, then you can change capitalization directly, but iirc unreal doesn't even let you on windows since windows is case insensitive so testFile and TestFile are one and the same.... when the file is already in version control (I'm talking about perforce right now) fixing casing is harder as it needs to be done in two separate commits/CLs because by default perforce is also case insentive and thus the files with different casings are one and the same, so only deleting the old file first and then re-adding the file with new capitalization is what fixes it....

#

where are the good old days of ALLCAPS and 8 character file names at most kek

runic trail
#

how do i check how much space my perforce server has available from p4v?

arctic hornet
#

I don't think it can be checked from p4v directly, but you can either check it from p4admin or by using p4 diskspace command if you have sufficient permissions

ornate matrix
#

what do you guys push to your designers so they dont have to use any IDE ?
do you push all files in Binaries ?

also, since you can't open a .uproject with a debug build, do you guys dev in debug builds, then when you want to push a new version to your designers your start a dev build then push some specific files ?

arctic hornet
ornate matrix
arctic hornet
#

well, ugs is not compatible with git, so you'd have to manually handle a lot of the stuff around them

#

but in general the idea is to simply compile binaries on a server or somewhere and then upload them separately from your git repository and download them based on what version user is synced to

ornate matrix
#

okay

#

why can't i build it and send the files directy in the git repo ?

ornate matrix
#

looks likz azure devops pipeline tools be good for that

cyan jay
arctic hornet
#

I'm against having binaries directly in tree for the reason you've said and also because programmers would have to remove them if they'd want to work on the source... and in general it can get really messy... but yeah, in worst case pushing binaries directly is also a way to go

#

imo best way would be to replicate how UGS does it and just write few batch scripts to do that stuff manually (on sync: remove existing, download zip, extract, keep track of extracted files for next sync)

ornate matrix
#

in my head i would have programmers manually run a script when they want to push new bins.
and designer would just have to pull and get it

woven sluice
#

well, if you're going to do it, just make sure you skip .pdb files or you'll be paying an arm and leg for storage within a week

ornate matrix
#

noted

silver token
ornate matrix
#

i guess if i am the only dev this setup is fine, i'll have to think of something better if we are a few devs

#

ik azure devops pipelines could be helpful, i'll have to check in depth

#

wait, isnt UGS free to use in source engine ?

pulsar parcel
#

UGS is in the engine sources, yeah

#

but it's tied to P4

ornate matrix
#

sounds overkill, ill check how complex it is to setup

ornate matrix
pulsar parcel
#

you can do a pretty simple deployment without the backend

ornate matrix
#

what does diversion uses, its still git in the back yeah ?

#

im thinking of hosting the git repo on AzureDevops but use diversion as the front end plugin, could this work ?

#

because it looks like its tied to github

woven sluice
#

no, it is not related to git at all

#

(i don't use it though so i can't offer anything more)

pulsar parcel
#

I initially thougut it was because I think they had some kind of Git adapter for CI

ornate matrix
#

well its been 2hrs i got Repository is being imported. You will be notified once import is completed. so i guess it cant import a azure repo

modern tulip
hoary wren
#

For folks who use shelving to do code reviews, how do you make sure that the changelist you shelved for the reviewer doesn't suddenly lose exclusive locks to files that were part of it?

Do you typically try to coordinate the shelving on the writer's machine and the unshelving on the reviewer's machine so that there's as little time as possible in between those two, so you don't have to ask folks to unlock files if they managed to get in between those two operations?

ornate matrix
#

just be carefull with the link format when you clone it

wide raven
# hoary wren For folks who use shelving to do code reviews, how do you make sure that the cha...

An unshelve in our system does not cause the loss of the lock on the original checkout the dev is working on. It does cause a new lock on the unshelving workspace. So they are basically both checked out during the review.
This might not be best practice though. It assumes there is a process in place where it is clear who can touch the file. Does the reviewer just look through, or also edits

hoary wren
wide raven
#

If the reviewer edits, it will become a new changelist, which would have to be shelved again to pass it back and forth. Since this feels clumsy, we generally avoid that and just take screenshots or copypastes as needed

hoary wren
#

I see, makes sense. We don't have Horde available currently so we were trying to explore the closest we can get to a Github-style Pull Request review for sensibly large changelists that include both BPs and source. Seems like shelving is about as close as we can get?

wide raven
# hoary wren I see, makes sense. We don't have Horde available currently so we were trying to...

apparently theres some review tooling in helix swarm
To initiate a review in Swarm, your changelist description must include "#review" either on its own line, or separated by whitespace. Optionally you can include "@username" on or more times to require those people as reviewers. Shelve the changelist with p4 shelve -c changelist#. A trigger on the server scans the descriptions, and if it sees the #review keyword it starts the review process.
will have to investigate if that is a thing

#

Might be overkill for small studios

hoary wren
#

I'd love Swarm, hoping that gets enabled on Helix Core Cloud in the next month or two, it's been something they announced for their cloud offering a while back, but it hasn't been rolled out yet.

sharp drum
#

guys is there any way to stop this? 🙂

#

it hangs there for like 10 minutes already

modern tulip
sharp drum
modern tulip
final silo
#

Hello! New to Perforce but used to Github. I have been trying to push changes for awhile with no luck with my partner. Shouldn't the flow be like this?

Checkout changes/Add
Push changes in change list

And thats literally almost it?

faint cairn
#

I'm trying to make our internal plugins easier to be re-used across multiple projects utilizing Git and its Submodules.

Right now, a UE Project, being its own Repo, would add a UE Plugin, which is also its own Repo, as a submodule.
Submodules can be added while tracking a specific branch, so the idea is to have a branch per Engine version and to point to the specific branch based on the Engine version of the project. That should allow pushing Binaries to the Plugin Repo based on the branch.

Both Project and Plugin are tracking Binaries in general, which programmers have set to ignore in their own global gitignore. That's to support non-programmers who can't build their own Binaries. The Binaries for them are build by a build machine and pushed whenever there is a change to the /Source folder.

For only the Project, this works just fine. For the submodule setup, this becomes a bit of a pain. The idea is that modifications to the Plugin can instantly be pulled into all projects that use it. I read that a simple git submodule update --recursive --remote would cause them to update, but also lead to a detached HEAD. Not really sure why, as that goes a bit of my own head.

Another problem is that, I think, git pull doesn't automatically take submodules into account, and our non-programmers use a client to pull their changes with. They don't really know how to use the command line stuff for git and I also don't want them to learn that.

Is there anyone who has something like this set up in a way that:

  • git pull updates the project and the submodules
  • Changes to the submodule can be pushed from within the submodule (that's easy enough I guess)
  • Updating the submodule does not detach the HEAD
  • Binaries are properly synced for non-programmers

I feel like my setup is close, but also has a bunch of hiccups that are annoying.

sharp drum
faint cairn
ornate matrix
#

im looking to use git with locking features

long hull
# faint cairn I'm trying to make our internal plugins easier to be re-used across multiple pro...

I kind of have this setup, but there's no real way to make it as smooth as you want.

git pull updates the project and the submodules
git pull --recurse-submodules should do the trick (also works on push, though I never use it)

Updating the submodule does not detach the HEAD
I've tried that for a long time, but I always end up no implementing it. I can't remember why sadly... You can do something with -b to link a sub to a branch, then update with --remote to track it to the branch. But if you do that, it ignores whatever commit is tracked from the superproject, so it can get messy: either you commit it and do the work twice, or you don't and you always get those changes in your worktree.

A while back sometimes (I think mcoms, who probably knows a lot more on that than I do) recommended subtrees over submodules. They have benefits, but also drawbacks, and since they're much less common, I stuck with submodules.

Overall, we have a dozen of projects, all forked from a template superproject (~450 subs, ~600GB), and it works. It's not ideal, and requires some work to keep everything in sync and ensure compatibility, but honestly it works rather smoothly. But we're really small and have exactly 0 artist, so we're not very representative of studios.

#

Changes to the submodule can be pushed from within the submodule (that's easy enough I guess)
I'm always on a detached HEAD in my subs, so at this point I have an alias for git push origin head:master

faint cairn
#

Pull in SourceTree alone doesn't check for submodules, so artists are lost.

#

git pull --recurse-submodules does only a fetch on the submodules.

#

I have the submodules point to a specific branch

long hull
#

Yeah, that switch probably doesn't handle --remote 😦

faint cairn
#

git pull (or maybe git pull --recurse-submodules) + git submodule update --recursive --remote seems to work

#

But I would love to have a damn button for that in the visual client -.-

#

Epic is more and more leaning into P4. It's so infuriating

#

Need someone to finally push through with a UGS Git version that is fully functional

faint cairn
#

We made a script to auto unlock unchanged files that everyone is required to run

ornate matrix
#

ah thats anoying

#

thanks for the answer

faint cairn
#

Yeah it is. We use GitLab internally and that on top of everything has an annoying bug when it comes to merging with locks -.-

long hull
# faint cairn Epic is more and more leaning into P4. It's so infuriating

Ever since I've started using Unreal, I never understood why Epic doesn't make their own VCS. They try to do every part of gamedev in-house, from Houdini (PCG) to Animation to Horde... except VCS. Which also happens to be like the most crucial part of every studio, and is also super expensive.

Even Unity managed to get this right and bought Plastic. For a while I thought that Skein would solve that issue, but boy was I wrong on that.

faint cairn
#

They do VCS stuff, just not the core of it.

#

Horde is now the CI/CD from Epic. And they use Robomerge to handle merging between branches.

#

But Horde strictly ties into P4

#

It's pretty cool, cause you can run preflights for your CLs to ensure they don't break anything pre-commit.
Git is so behind with its damn post-commit stuff.

#

And I miss Swarm..