Jump to content

Git?

VulsaviiK

I have a few questions regarding Git

 

I am currently for a project building Doom levels with a team of people. I've heard Git mentioned, but usually only in the context of coding projects, of which this is not.

 

What I want to be able to do is have a revision history of each map, as well as keep an up-to-date "Master File" that can be edited seperately. This would help with distributing the files. The file formats we'll be using are .wad and .dbs, since those are the files used by both the games engine and the map editor/wad author. 

 

-Can Git be used for this kind of project?

-My understanding is that this works off of some kind of server. Is there a chance I can run it off my home PC?

-How do I go about setting up Git?

 

This would help out a lot if people could educate me on Git, not only for this but also for future projects. Since I'm an IT student these days, I'll probably end up with quite a few coding projects anyway, and being able to use a tool like Git I imagine would be a big help.

CPU: Intel Core i7-4770k | Mobo: MSI Mpower Max | Cooling: Cryorig R1 Ultimate w/ XT140 front Fan | GPU: EVGA GTX 770 Dual SC SLI | Case: NZXT H440 | Case Fans: Phanteks PH-140SP x5 | PSU: EVGA Supernova P2 1000W | RAM: 16GB Crucial Ballistix Tactical Tracer | SSD: Kingston HyperX 3k 120GB | HDD: Seagate Barracude

Keyboard: Razer Blackwidow Ultimate 2013 | Mouse: Razer Deathadder 2013 | Headphones: Sennheiser HD438s | Mousepad: Razer Goliathus Control | Monitor 1: Benq XL2430T | Monitor 2: BenQ RL2455HM 

 

Link to comment
Share on other sites

Link to post
Share on other sites

You could use SourceTree, it is like an interface for Git with a couple extra features.

Current rig: CPU: AMD FX-8120  Cooling: Corsair H100i  Mobo: ASRock 970 Extreme 3  RAM: 8GB 1333Mhz  GPU: MSI GTX 660Ti Power Edition  Case: Fractal Design Define R4  Storage: 2TB Seagate HDD + 128GB Crucial SSD  PSU: be quiet! 730W bronze

 

Link to comment
Share on other sites

Link to post
Share on other sites

Git is used for version control.

 

It maintains a history of every "commit" that you do, and you can move around these commits.

 

Say you are 1 month in and you want to back track a week. Find a commit from then and jump back to it.

 

Want to add some new strange thing and not mess with your master/live copy? Branch it, make a seperate stream from the main that can be commited to independently. Changes here won't effect the main branch. This can be used either for new features and what not, or just to split the dev work into parts, or bug fixes blah blah.

 

New feature is great? You've reached v0.1? Merging can bring in these branches and combine them. So you can merge the new feature into the main branch so its part of the main copy now.

 

 

Thats like the worlds shortest description, checkout the free manual here, its really good.

 

Now for your questions:

 

1) Should be able to. Git works by tracking any files you tell it to. Just point it to the files you want it to track and it does. Usually, there is no point tracking compiled files. ie, track the .java files, but not the .class files. Basically, if you can make a file from another, don't bother tracking it as you can just make it again. Checkout .gitignore files for ignoring stuff.

 

2) Actually not sure about this part of it, It doesn't necessarily run of a server, you can just do it locally, but if its on a server its useful for groups. Person 1 edits, commits and pushes to the server. People 2-5 just pull and get all your updates copied down. You could host, or you could look into someone else to do it for you. GitHub and GitLab is what I've used, with GitLab offering free "private" repositories. Private just means that its hidden and password protected, if thats not needed just make it public.

 

3) Download/Install git. Setup the basic user settings, (ie name, email , chosen editor) Its all covered in chapter 1 of that manual. After that, initialise a folder to be tracked, set the files to be tracked, setup the server and push up to it. From there, any one else can clone the server copy and get an exact copy. From there its just a case of working like normal, and once you are done with a feature/significant enough change to update everyone, you commit it, push it up and everyone can then pull it down. 

Terminology is a bit annoying for git. I've only used it for like 1 year, but I'm okay enough with it now.

It is very valuable, even if git itself is a bit awkward to learn. I can easily work on my Uni projects with my team members.

I've used it for a 12 week project for uni, and it would have been awful to work without it. The teams that have used it clumsily are the ones who are struggling. 
Setting it up properly does pay off. Groups who didn't get issues with conflicting files that don't need tracking and more.

 

Oh, and If you use GitHub or Lab, try using some of the other built in parts. Wiki is nice to store info in, the issue tracker has an obvious helpful feature, Milestones and more. 

 

Sorry that got so long, but I hope it helps in some form.

CPU: 6700k GPU: Zotac RTX 2070 S RAM: 16GB 3200MHz  SSD: 2x1TB M.2  Case: DAN Case A4

Link to comment
Share on other sites

Link to post
Share on other sites

why not just use any cloud storage site and name your files by revision every time you save there's no need for fancy servers it's easy to set up a joint cloud folder. Drop box is a good example of this and they give you extra store when you create joint folders. 

There are 10 types of people in the world: those who understand binary numbers and those who don’t

bulgara, oh nono

Multipass

Link to comment
Share on other sites

Link to post
Share on other sites

You could use SourceTree, it is like an interface for Git with a couple extra features.

 

My tutor showed me this in class today

 

 

*snip

 

I'm setting it up now. I'm hosting on bitbucket and using SourceTree for commits. I just did my first push then after 40 minutes, mostly without instructions

CPU: Intel Core i7-4770k | Mobo: MSI Mpower Max | Cooling: Cryorig R1 Ultimate w/ XT140 front Fan | GPU: EVGA GTX 770 Dual SC SLI | Case: NZXT H440 | Case Fans: Phanteks PH-140SP x5 | PSU: EVGA Supernova P2 1000W | RAM: 16GB Crucial Ballistix Tactical Tracer | SSD: Kingston HyperX 3k 120GB | HDD: Seagate Barracude

Keyboard: Razer Blackwidow Ultimate 2013 | Mouse: Razer Deathadder 2013 | Headphones: Sennheiser HD438s | Mousepad: Razer Goliathus Control | Monitor 1: Benq XL2430T | Monitor 2: BenQ RL2455HM 

 

Link to comment
Share on other sites

Link to post
Share on other sites

You can set up a GitLab server at home, it's quite easy, I know of buisnesses that do that. It's complemetely free, I just don't really like the interface, but life is life, what you gonna do.

Link to comment
Share on other sites

Link to post
Share on other sites

You can set up a GitLab server at home, it's quite easy, I know of buisnesses that do that. It's complemetely free, I just don't really like the interface, but life is life, what you gonna do.

 

Bitbucket ended up being fine for me, I doubt I'll be working in a team of more than 5 within the next few years

 

Although considering we're using binaries mostly this probably wasn't the greatest of solutions but it was a good learning process. I can still log it on my timecard for this class and I know how to set up Git Repositories when I actually do need it

CPU: Intel Core i7-4770k | Mobo: MSI Mpower Max | Cooling: Cryorig R1 Ultimate w/ XT140 front Fan | GPU: EVGA GTX 770 Dual SC SLI | Case: NZXT H440 | Case Fans: Phanteks PH-140SP x5 | PSU: EVGA Supernova P2 1000W | RAM: 16GB Crucial Ballistix Tactical Tracer | SSD: Kingston HyperX 3k 120GB | HDD: Seagate Barracude

Keyboard: Razer Blackwidow Ultimate 2013 | Mouse: Razer Deathadder 2013 | Headphones: Sennheiser HD438s | Mousepad: Razer Goliathus Control | Monitor 1: Benq XL2430T | Monitor 2: BenQ RL2455HM 

 

Link to comment
Share on other sites

Link to post
Share on other sites

why not just use any cloud storage site and name your files by revision every time you save there's no need for fancy servers it's easy to set up a joint cloud folder. Drop box is a good example of this and they give you extra store when you create joint folders. 

This, terrible idea lol

 

Git will work for that sitituation as GIt will work with any files as long as you have the file type in the whitlist, "gitignore", and will in face solve all of the version control needs. Git really is awesome, though I do recomend a visual interface like Source tree for ease of access.

"Her tsundere ratio is 8:2. So don't think you could see her dere side so easily."


Planing to make you debut here on the forums? Read Me First!


unofficial LTT Anime Club Heaven Society

Link to comment
Share on other sites

Link to post
Share on other sites

If working with binaries, you can use SVN instead. SVN server creates complete copies of every version, I like it more as a longer term solution, that does not change rapidly. Things like compiled libraries that don't get updated too often are well suited.

Link to comment
Share on other sites

Link to post
Share on other sites

why not just use any cloud storage site and name your files by revision every time you save there's no need for fancy servers it's easy to set up a joint cloud folder. Drop box is a good example of this and they give you extra store when you create joint folders. 

 

No, that's stupid.

Link to comment
Share on other sites

Link to post
Share on other sites

So does git.

That's incorrect. Git saves only changes, it does not contain full copies with every commit, that is the reason why git is able to do branch based development so well and SVN does not. And that's why git sucks a bit at storing binaries, and SVN does not.

Link to comment
Share on other sites

Link to post
Share on other sites

That's incorrect. Git saves only changes, it does not contain full copies with every commit, that is the reason why git is able to do branch based development so well and SVN does not. And that's why git sucks a bit at storing binaries, and SVN does not.

 

It saves complete files if they are chaned, like snapshotting a filesytem. it avoids making unecessary copies of identical data. I don't know where you're getting these other notions.

Link to comment
Share on other sites

Link to post
Share on other sites

It saves complete files if they are chaned, like snapshotting a filesytem. it avoids making unecessary copies of identical data. I don't know where you're getting these other notions.

I just read up about it, prematurely decided about it. I've read about everything else except that it seems :D.

Link to comment
Share on other sites

Link to post
Share on other sites

I just read up about it, prematurely decided about it. I've read about everything else except that it seems :D.

 

LTT, echo chamber of the armchair pontificators.

Link to comment
Share on other sites

Link to post
Share on other sites

Actually even better, I figured out a way of storing the maps as text files, meaning Git would be able to display changes to the level

CPU: Intel Core i7-4770k | Mobo: MSI Mpower Max | Cooling: Cryorig R1 Ultimate w/ XT140 front Fan | GPU: EVGA GTX 770 Dual SC SLI | Case: NZXT H440 | Case Fans: Phanteks PH-140SP x5 | PSU: EVGA Supernova P2 1000W | RAM: 16GB Crucial Ballistix Tactical Tracer | SSD: Kingston HyperX 3k 120GB | HDD: Seagate Barracude

Keyboard: Razer Blackwidow Ultimate 2013 | Mouse: Razer Deathadder 2013 | Headphones: Sennheiser HD438s | Mousepad: Razer Goliathus Control | Monitor 1: Benq XL2430T | Monitor 2: BenQ RL2455HM 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×