Code Monkey home page Code Monkey logo

Comments (29)

SRombauts avatar SRombauts commented on May 27, 2024 8

Hi all!

I have published yesterday a "Early-Access" preview-version of the Git LFS 2 plugin with some first level of support for File Lock.

Please note that:

  1. Fixed in Git LFS 2.3.0 released 7 days ago! I have found Git LFS 2 to be not totally reliable (under Windows at least). An early tester found that sometimes "read-only" flags are not in sync with "file lock" which can totally mess with the Editor assumptions on those!
    1. This was reported testing OUSTIDE UE, so WITHOUT the plugin!
    2. The plugin would probably have to handle this, but this could be non-trivial (think medium-term goal).
  2. This pre-release have a known issue about File Locked by others not correctly handled!. This needs to be addressed ASAP, but I felt that I could still published the code as-is for early tests.

You have been warned enough ;) add-git-lfs2-file-lock-support (release "2.3-lfs2-lock-preview")

Cheers!

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024 4

To install this, please just download the latest release and put it in your project Plugins/ folder (not in Engine, to override the Git plugin present in Engine)

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024 3

So if you want my opinion on the remaining works:

  1. LFS locks on Windows command line needs to improve performance wise
  2. I shall discover and eradicate a few minor bugs (like errors on logs and some quirks on some specific commands
  3. I have to try to improve the robustness of the whole thing (like how to handle disconnection, failure modes...)
  4. I have to document the whole thing!

from uegitplugin.

ArtyMcLabin avatar ArtyMcLabin commented on May 27, 2024 2

Yes thank you, i have erased my previous comment after realising that :]
It works. thank you very much for your contribution!

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024 1

I currently have a "Proof Of Concept" branch more or less working with LFS locks 👍

from uegitplugin.

jfaz13 avatar jfaz13 commented on May 27, 2024 1

@SRombauts I don't know why this isn't being talked about more. Locking files is one of the main reasons UE4 devs tend to use Perforce

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024 1

Hi @fire @BenjaminDSmithy @aztekyi @faemir @Totoro83, thanks for you support on this!

I really mean it, that is, I really need some motivation to get back on this! It's a bit of a daunting task since I let it in a not so good shape, and during this work I've discovered some bugs on other parts of the plugin. And now the code is diverging more and more on each release...

So hey, I should be back on the plugin, I have no other personal project going on currently, so I'll try to start by refreshing the code, and probably at least doing another general bugfix before Git LFS 2.

from uegitplugin.

YotaVGA avatar YotaVGA commented on May 27, 2024 1

Really thanks for the work you're doing!

from uegitplugin.

fire avatar fire commented on May 27, 2024

What do I need to test this?

from uegitplugin.

fire avatar fire commented on May 27, 2024

Can you separate the changes into a plugin? It would be so helpful.

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

Hi @fire, thanks for you interest!

I believe it's still a bit too early to test: everything is on a branch on my fork, as stated above (https://github.com/SRombauts/UnrealEngine) so you need to rebuild the full Editor from source.

I've started the process of backporting all into this repository so that it will be easier for other to test, but it will take a few more hours/nights to get it in.

from uegitplugin.

fire avatar fire commented on May 27, 2024

I was able to extract it as a plugin. What servers support the git-lfs locking?

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

I am testing it with Github. They are behind Git LFS and are probably the only one with a server implementation ready at this time.

Edit: I hope to finish the work on the plugin configuration in a few days, there are currently some big holes (remote, credentials...) and a few hard-coded spots (in the "State" class for instance)

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

Hi @fire, I discovered that the two last commits, about discovering Git LFS capabilities, and about Settings to enable/disable the Locking workflow was both broken: this was effectively disabling the "lock"/"unlock" commands entirely!

Also, I have a lot of TODOs and small in-progress improvement locally that are not ready to go public:

  1. don't try to lock a new ("Added") asset
  2. don't try to unlock a file that is not locked

At this stage, the whole thing assumes you have set up the repository correctly and have it working in command line, so that the plugin can just reuse the credentials.

Also everything is awfully slow (LFS is slow, and the Editor double some status commands) and awfully buggy

from uegitplugin.

fire avatar fire commented on May 27, 2024

Ah, how did it go? Did you get stuck on something?

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

Hi @fire,
I got it to a point where I could make a checkin and push, but it needs far more works to be production ready. For now:

  1. you need to complete the setup of the repository by command line (remote url and Github user credentials)
  2. for now, I assume the whole Content/ directory is tracked, but this does not enable editing of Config/ and uproject files since the Lock command fails for them

In the meantime, I discovered more bugs/limitations of the current Git plugin, so I am working on a few merge requests to fix those ASAP.

I have also updated this plugin repository, and am going to switch it to the main dev as the "Git LFS" plugin so you could have both in Engine.

I will keep you inform, for now my main problem is trying to focus on one task at the time...

from uegitplugin.

fire avatar fire commented on May 27, 2024

Can't wait!

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

I've spent some time polishing the UE4.16 release.

I've spent a greater amount of time updating this repo and shaping it into a standalone "Git (dev)" replacement plugin that you can put in your project's Plugins folder to replace the default in Engine "Git (beta version)" plugin (so you can not have both at the same time)

@fire I am currently busy on another project, but please keep asking to push me :) !

from uegitplugin.

BenjaminDSmithy avatar BenjaminDSmithy commented on May 27, 2024

@SRombauts any new advancements? Also GitLab by far has the best implementation of Git LFS v2.x File Locking capabilities as they actually offer a front-end website GUI solution as seen here: https://docs.gitlab.com/ee/user/project/file_lock.html

GitHub comes in probably at 2nd place in that regards and Bitbucket Cloud + Server offerings aren't even supported yet and they have open community tickets pending for requesting those features as seen here: https://jira.atlassian.com/browse/BSERV-9623

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

Well, in my experience, Git LFS 2.0.0 was a bit shaky, and verrrry slow compared to Perforce and Plastic SCM, so that got me a bit demotivated. I am also very busy on other projects, sorry about that :(

from uegitplugin.

faemir avatar faemir commented on May 27, 2024

Just chiming in to say that I'm eagerly awaiting this feature, and happy to help test it!

from uegitplugin.

Totoro83 avatar Totoro83 commented on May 27, 2024

I can't wait too! (Hoping this will help pushing the work ❤️ )

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

I found an issue about this on the Git LFS project issue tracker: "git lfs unlock" does not reset the readonly file system attribute. #2494
It is solved in Git LFS v2.3.0 released 7 days ago!

So you cannot rely on the previous Git LFS v2.2.1 release, the one integrated in latest "git for windows" (2.14.1) (like I did)

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

Okay, so initial support of Git LFS 2 File Locks is release in v2.3 of the plugin :)

Let me know if it breaks/works for you.

Documentation should be improved on how to use this...

from uegitplugin.

jfaz13 avatar jfaz13 commented on May 27, 2024

from uegitplugin.

ArtyMcLabin avatar ArtyMcLabin commented on May 27, 2024

hey, any news about that project?

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024

Well yes, Git LFS 2 was released in v2.3 about 4 months ago, I've released bug fixes and a few new features in two releases, with v2.5 yesterday.

I am deeply missing feedbacks since I don't use LFS 2 myself in my daily workflow!

from uegitplugin.

ArtyMcLabin avatar ArtyMcLabin commented on May 27, 2024

as i understand it will still not work like perforce mechanism, and wont prevent people from editing locked files, and instead just disabling their pushes, am i right?
if i might ask, what do you use instead?

from uegitplugin.

SRombauts avatar SRombauts commented on May 27, 2024
  1. The Git Plugin enforce the Lock, so the user is not allowed to checkout already locked by someone else, exactly like in Perforce. It is still possible to make it writable, like in Perforce, but then you are not able to Checkin, like in Perforce.
  2. I am using plain git most of the time, that is without LFS or LFS 2 as I am working mostly alone.

from uegitplugin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.