No video

Teamwork & Git - Computerphile

  Рет қаралды 100,189

Computerphile

Computerphile

Күн бұрын

Computer says no! What if two team members try to edit the same file in a project? Git has you covered - Dr Max Wilson explains how teams collaborate using Git.
/ computerphile
/ computer_phile
This video was filmed and edited by Sean Riley.
Computer Science at the University of Nottingham: bit.ly/nottsco...
Computerphile is a sister project to Brady Haran's Numberphile. More at www.bradyharan.com

Пікірлер: 258
@franchello1105
@franchello1105 2 жыл бұрын
We were never taught how to use Version Control in college. I think this is something you should lean to do in a first year CS course.
@Joshua-c
@Joshua-c 2 жыл бұрын
I think they should teach this during first week of orientation - Its ridiculous that I learned using this only after 4-5 years from graduation. and yes - I am a product manager
@tusharjamwal
@tusharjamwal 2 жыл бұрын
i thought its because the CS courses are all still actually 'computer science' and not 'software engineering' or 'software development' even if that is what most graduates are doing.
@phasm42
@phasm42 2 жыл бұрын
@@tusharjamwal yeah, people commonly conflate computer science with software development.
@TimothyFish
@TimothyFish 2 жыл бұрын
We had a class that covered it. I don't know that I agree that it needs to be taught first thing. But even if it isn't taught, most people are going to end up a company that is going to teach them to use it very soon after they get there.
@LitCactus
@LitCactus 2 жыл бұрын
In my program we learned git in first year
@YashKMusic
@YashKMusic 2 жыл бұрын
It's hard to talk about Git without showing code to visualize the concepts - especially the part where the merge conflicts were mentioned
@larrytroxler7017
@larrytroxler7017 2 жыл бұрын
You don't want to see the ugliness.
@iamfenix117
@iamfenix117 2 жыл бұрын
I view computerphile more as higher level ideas than i do a tutorial on how to do something. Showing code isn't necessary in that case.
@hypergraphic
@hypergraphic 2 жыл бұрын
I was thinking the same thing. The worst is when you’ve been working on a branch for weeks and have dozens of merge conflicts to fix.
@stt.9433
@stt.9433 2 жыл бұрын
@@iamfenix117 you're absolutely right, it's more of a macro perspective than a micro one, and that's why it's amassed such a big audience.
@stantoniification
@stantoniification 2 жыл бұрын
Agree - they should show a merge tool in operation
@ancientswordrage
@ancientswordrage 2 жыл бұрын
This is a lovely idealised view of teams and their processes.
@TimothyFish
@TimothyFish 2 жыл бұрын
What he described is very similar to the process that we follow where I work.
@theoneandonlyricko3199
@theoneandonlyricko3199 2 жыл бұрын
Git is a game changer
@willemvdk4886
@willemvdk4886 2 жыл бұрын
Automated testing and continues delivery is even more ;)
@marklnz
@marklnz 2 жыл бұрын
I mean, not really. It's been in common use for over a decade now, and arguably is THE version control standard now. So it IS the game, not the game changer.
@modernkennnern
@modernkennnern 2 жыл бұрын
Was* It's been the de-facto standard for over a decade
@dfmayes
@dfmayes 2 жыл бұрын
Software configuration management has been evolving for decades. git inherited many features from its predecessors so I wouldn't say it's game-changing.
@larrytroxler7017
@larrytroxler7017 2 жыл бұрын
Why? Everybody seems to be on the Git bandwagon, but how is it a game changer? I'm not trying to be antagonistic at all, just that I think I might be missing something that was not addressed in this video. How is Git better than Svn, for example? From the video, it is no different than Svn.
@ScottLahteine
@ScottLahteine 2 жыл бұрын
Version Control in-general is such a great and vital boon for development teams. I've become a huge fan of Git and GitHub, which have made it possible for me to maintain a big and popular project (Marlin Firmware) from anywhere, with a huge number of contributors, and even to get a little sponsorship so I can do the work full time. Before these services came along open source project management was a lot more scattered among a myriad of tools and servers. 2:28 - I tend to use 'git rebase' whenever I can, if the thing I'm working on can be done that way without a force-push. It keeps the history a little neater.
@TesterAnimal1
@TesterAnimal1 2 жыл бұрын
Use squash merge when merging PRs to keep the history of the master branch clean. My working branches I use normal merges when I pull in master so that I have a history of what I did, and can see when I introduced a bug.
@ScottLahteine
@ScottLahteine 2 жыл бұрын
@@TesterAnimal1 Yeah, I always squash-and-merge pull requests, unless the commits are better kept separate, in which case I'll just do a rebase-and-merge. And, I alwats use git-emojis to make the cmmit messages more colorful.
@justsurajp
@justsurajp 2 жыл бұрын
these git videos are really great! as a dev who frequently works closely with git, i can really correlate with the video. however it would make much more sense, or complete sense, only when more hands-on examples are shown in the video. all theory and no examples, makes jack a dull boy! ;)
@AchtungBaby77
@AchtungBaby77 2 жыл бұрын
This is so true. I tried learning Git from tutorial videos multiple times and always struggled to connect theory to practice. The only way I overcame this was to do examples repeatedly, especially merges and fixing merge conflicts.
@matka_pluku
@matka_pluku Жыл бұрын
I really love the work all of you are doing, and thank you so much for letting us being a part of it! I think it would be awesome to continue the git series with a video on git-annex. I think it is a really cool concept and would love to see you people breaking it down for us!
@briancoverstone4042
@briancoverstone4042 2 жыл бұрын
A "pull request", which is the gated review needed before code is merged, is actually a "push request" to the repository. You can tell Linus Torvald didn't write that part, because they couldn't even be bothered to name it properly.
@majncraftchlapik
@majncraftchlapik 2 жыл бұрын
that's why calling it a merge request makes more sense
@TAP7a
@TAP7a 2 жыл бұрын
As usual, permissions and backups prove once again to be two of the most powerful tools in the security toolbox
@levmatta
@levmatta 2 жыл бұрын
This brings us to a great truth of our trade -- always commit first (I actually use SVN).
@rickymort135
@rickymort135 2 жыл бұрын
"I actually use SVN" Get out!
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
With Git, it’s “commit early and often”. 😎
@RudyBleeker
@RudyBleeker 2 жыл бұрын
The 80's called, they want their version control system back
@levmatta
@levmatta 2 жыл бұрын
@@RudyBleeker, first Ouch! Second, the only real advantage of GIT is tooling and wasting money doing merges. I have a non distributed team, and actually like command lines that make sense.
@RudyBleeker
@RudyBleeker 2 жыл бұрын
@@levmatta apologies, my comment was meant as a joke, not an insult. Also it's factually incorrect, SVN was developed in 2000, not the 80's, I got it mixed up with CVS. That said, I can't make heads or tails of SVN's command line syntax, nor do I particularly like the client-server model and quirks that come with it such as locking. But that's probably because I haven't used it very much, I started early with git and got the hang of that pretty quickly.
@cppguy16
@cppguy16 2 жыл бұрын
This is a great explanation on the high level. I would add that as your company grows, you break up large files into smaller ones, to minimize conflicts between edits. It's also the job at someone higher up to design the file system. When you decide what goes to which file you have to consider not just similar functionality, but also what's stable versus constantly changing, and what's private implementation versus customer-facing. Sometimes you have a different reviewer for the customer-facing interfaces, and a different person is going to review your Android code, iOS code, Windows code, Linux code, Web code, etc. And sometimes your code needs to pass auto-validation (such as circleci) before you're allowed to merge/pull.
@KepaTairua
@KepaTairua 2 жыл бұрын
Living the git series!
@python-programming
@python-programming 2 жыл бұрын
This is another great video in this great series!
@kristoffseisler2163
@kristoffseisler2163 2 жыл бұрын
what flavor of marshmallows the camera guy is chewing on?
@Computerphile
@Computerphile 2 жыл бұрын
Mask flavoured iirc -Sean :)
@willis936
@willis936 2 жыл бұрын
I love git and I love collaborating, but man conflict resolution always feels like pulling teeth. I know it should be addressed at a higher level (try to structure parallel tasks that result in fewer conflicts), but I feel like the default tooling of conflict resolution in git is painful. I'm all for CLIs, but I would much prefer a GUI for conflict resolution. Something like winmerge where I click on the lines I want to keep. Having to nano through files and delete lines and keep track of things and then think "oh I do I want to do an add now or not?"... it's all so much and I don't think it needs to be.
@adia.413
@adia.413 2 жыл бұрын
Try vscode for conflict resolution, unless you have deep tree conflicts, conflict resolution is really easy
@YoutubeFrog1212
@YoutubeFrog1212 2 жыл бұрын
As someone who codes in C# and uses Rider as an IDE, you can do exactly what you're describing when handling merge conflicts!
@adia.413
@adia.413 2 жыл бұрын
@@KZfaqFrog1212 also in Intelij, but I prefer vscode or either solve it manually.
@davidfrischknecht8261
@davidfrischknecht8261 2 жыл бұрын
@@adia.413 SmartGit is another option.
@Quarky_
@Quarky_ 2 жыл бұрын
Conflict resolution isn't Git's job. Git just identifies the conflicts, you resolve them in your editor. Whatever pain points you are facing, it's probably to do with your editor setup rather than git.
@grizzlythresher7140
@grizzlythresher7140 2 жыл бұрын
I work on a team which uses both Git and Microsoft Team Foundations Server (for different products), and holy cow is it a lot nicer using Git. TFS has some neat features, but Git is just So Much Cleaner. Plus the ability to make multiple commits then push all at once. Git truly is brilliant.
@idjles
@idjles 2 жыл бұрын
Why do you think Microsoft bought GitHub?
@marklnz
@marklnz 2 жыл бұрын
TFS can use Git for version control, rather than TFVC which is (or used to be, at least) the default. And you can, I believe, migrate from TFVC to git as well. Just to give you a bit of a gentle reality check though - Git isn't perfect. It does have it's own problems too.
@marklnz
@marklnz 2 жыл бұрын
@@idjles Nope. They had Git and TFVC well before they bought github. That acquisition was done for a whole different reason.
@grizzlythresher7140
@grizzlythresher7140 2 жыл бұрын
@@marklnz Oh? I did not know that! Alas, I'm not the one who gets to make that decision, so for now I'm stuck with TFVC, at least until we retire this project and its updated version goes live. And yeah, I'm well aware that Git has its faults (I'd be a fool to think Any VC system was flawless) I just personally like some of the things it allows you to do which TFVC doesn't, or at least which I haven't figured out how to do.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
Warning: Using TFS or Visual SourceSafe can be seriously harmful to your programmers’ productivity.
@briancoverstone4042
@briancoverstone4042 2 жыл бұрын
During a merge conflict, if you want to also see the original code before both sides clashed, which can sometimes make it easier to merge, run the following before you do a git pull: git config --global merge.conflictstyle diff3
@ZT1ST
@ZT1ST 2 жыл бұрын
Hoping we might get a video about Git Merge vs Git Rebase.
@aravindpallippara1577
@aravindpallippara1577 2 жыл бұрын
It's not big enough for a video but it's very important for every newbies out there - I hope they cover it somewhat in a later video
@ZT1ST
@ZT1ST 2 жыл бұрын
@@aravindpallippara1577 I think at least for Git Rebase they could make a full video discussing why you need to force push when you do it. And why once someone starts rebasing in a Git repository, it tends to be that everyone has to start rebasing in a Git repository.
@RudyBleeker
@RudyBleeker 2 жыл бұрын
@@ZT1ST you don't and you don't. Just never rebase anything that you work on with other people, only private branches that you merge before publishing them.
@ZT1ST
@ZT1ST 2 жыл бұрын
@@RudyBleeker Sure. but you could absolutely do a whole video on *why* that's the intended case. Because you *can* rebase the main and public branches. You just never *should*, hence why it's limited to private branches in practice.
@DanielVoyles
@DanielVoyles 2 жыл бұрын
How many times did you hear "beata" before you realized he was saying "beta"?
@aravindpallippara1577
@aravindpallippara1577 2 жыл бұрын
Always pronounced it as beata myself See no reason to change now
@crappymeal
@crappymeal 2 жыл бұрын
queens English
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
beta, eta, theta, zeta ... they all rhyme.
@menachemsalomon
@menachemsalomon 2 жыл бұрын
My weirdest merge (with admittedly limited experience) was a SQL statement. Both of us had added columns, where Git noticed a conflict. But we'd also both increased the number of GROUP BY columns, which were numbered rather than named, so we both added ", 24" to the list - which was not seen as a conflict (and there were enough JOINs to make that change out of context). So I had to manually add ", 25" to the merge commit. But that's what tests and test environments are for.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
Maybe that’s an argument for using names rather than numbers.
@menachemsalomon
@menachemsalomon 2 жыл бұрын
@@lawrencedoliveiro9104 It might be. :-) In this case, though, the original code wasn't mine, and I prefer to leave as many lines untouched as I can. Elsewhere in the code base, we did indeed use names.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
I can’t even see anything in standard SQL that allows columns to be referenced by numbers, only names. Not in the SQL 2003 spec, anyway.
@menachemsalomon
@menachemsalomon 2 жыл бұрын
@@lawrencedoliveiro9104 The Informix dialect allows columns in the GROUP and ORDER BY clauses to be referred to by number instead of by name. Especially convenient if a some of the columns are expressions (usually TRIM) and you don't want to provide aliases for each.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
@@menachemsalomon I don’t understand the point of that. It’s just a recipe for needless obfuscation -- and trouble, as you discovered.
@austinskylines
@austinskylines 2 жыл бұрын
Can we get a tripod maybe? I’ve never seen someone shake so much
@SArthur221
@SArthur221 2 жыл бұрын
1:46 that's more like how svn works rather than git. git treats commits as atomic, rather than svn's file-by-file approach, so it'll be much simpler. if the remote branch has newer commits that your branch doesn't have, it will force you to update.
@b2bb
@b2bb 2 жыл бұрын
I am litterally in this every single day, but I am still inclined to watch the video.. huh
@DaveParr
@DaveParr 2 жыл бұрын
Seems like another part of the answer about KZfaq hypothetically changing something is automated testing and having a test environment before they put the updated software into the live product?
@ArthurTugwell
@ArthurTugwell 2 жыл бұрын
Wow that camera wobble is infuriating
@MrReese
@MrReese 2 жыл бұрын
I have been dealing with this for years and it is so complicated and takes so much time, it's crazy. There are so many bright minds on the planet and in IT and programming, and yet, after all these years, nobody has come up with something more useful and practical as well as less time-consuming.
@ChrisBohling
@ChrisBohling 5 ай бұрын
Let everyone perform merges and only test in production. Anarchy now! 😂
@wisquatuk
@wisquatuk 2 жыл бұрын
1:41 - contrary to the animation, the issue here is NOT that both people edited file 4. The issue is that both people made ANY commits, modifying ANY files. They’ve essentially created a fork in the road, and that can’t happen - all git branches need to have one and only one “head”, and have a clear line of ancestry leading back from that, so you can’t have two heads. So what person #2 is doing is either merging the two roads back into one (if they pull/merge from the repo), or else reordering their commit(s) to be direct children of person #1’s commit (rebase). This must happen regardless of whether they even touch the same files or not.
@RudyBleeker
@RudyBleeker 2 жыл бұрын
While you are correct in theory, in practice as a git user you don't have to worry about this if you didn't edit the same area in the same file. When the second person pulls because he can't push at that point, but there is no conflict, git will just fast-forward the head to where it should be and automatically merge the new code. Depending on your settings it might not even create an automatic merge commit.
@mdsajaldeowan1054
@mdsajaldeowan1054 Жыл бұрын
thank you so much this is a beneficial video
@GT-tj1qg
@GT-tj1qg Жыл бұрын
The introduction is kinda misleading. Makes it sound more like a permissions system than a system for safe, concurrent editing.
@schwidola3549
@schwidola3549 2 жыл бұрын
git gud
@stephenbae2989
@stephenbae2989 2 жыл бұрын
How was life before git?
@carlaodacosta
@carlaodacosta 2 жыл бұрын
We used Subversion and it was ok. And before Subversion, we used CVS and it was ok too...
@vorrnth8734
@vorrnth8734 2 жыл бұрын
@@carlaodacosta while CVS was better than nothing it was considerably worse than either SVN or git.
@Konarcoffee
@Konarcoffee 2 жыл бұрын
The same? Source control has existed for a real long time
@Ceelvain
@Ceelvain 2 жыл бұрын
@@carlaodacosta And before CVS there was RCS. And before RCS there was mostly manual management of revisions. But it was less of an issue back then.
@harrkev
@harrkev 2 жыл бұрын
Subversion works great. It uses a centralized server for everything. Git is decentralized. Its main advantage is that it takes a LOT more data to do a checkout, and the vast majority of people use a centralized server anyways, so git acts a lot like a much slower version of SVN. Yes, git has a few advantages over SVN, but those advantages are not a big deal for most people.
@thenylon1003
@thenylon1003 2 жыл бұрын
Thank you for the video! The camera is shaking and it's making it hard to watch.
@dj4rapz
@dj4rapz 2 жыл бұрын
I cant imaging life without git.
@rickymort135
@rickymort135 2 жыл бұрын
I would prefer a life without love
@thetommantom
@thetommantom 2 жыл бұрын
I always got beta stuff but now for example with snapchat now they actually charge money for early access to new features
@guderian557
@guderian557 2 жыл бұрын
Code reviews are obviously important, but you should talk a bit more about automated tests. A key concept.
@eldaiblol1492
@eldaiblol1492 2 жыл бұрын
TL;DW: Do. Not. Push. To. Main!
@ddanielsandberg
@ddanielsandberg 2 жыл бұрын
Do CI/CD and always push to main.
@zilog1
@zilog1 2 жыл бұрын
what about alpha versions?
@MCRuCr
@MCRuCr Жыл бұрын
on the other side you have _business_ _software_ platforms ( *cough* SAP *cough* ) where you cannot do anything with any code without littering the entire system for everyone. But what do I know, I am only a regular software engineer without deep *BUSINESS* understanding
@rob-890
@rob-890 2 жыл бұрын
Gotta love Computerphile. A new concept comes out and just like that 17 years later they'll do a video on it clumsly.
@YandiBanyu
@YandiBanyu 2 жыл бұрын
Can you take a look at pijul? It is supposed to help resolve conflict with a mathematical theory to back it up.
@larrytroxler7017
@larrytroxler7017 2 жыл бұрын
I'm having difficulty understanding how Git fundamentally differs from something like Subversion. Can anybody explain what the difference is? Thanks.
@MrBillgonzo
@MrBillgonzo 2 жыл бұрын
I think one of the main differences is that with Git the coder is cloning a repository locally to their personal machine, where is SVN you're working with a centralized system.
@beyse101
@beyse101 2 жыл бұрын
Imagine you commit just like SVN but nobody else (no server) gets the change. You can commit as often as you want. Only when you push the server receives your changes and commits and others can get them too.
@MaulikParmar210
@MaulikParmar210 2 жыл бұрын
Subversion internally stores changes as file objects while git stores changes as commit tree. Subversion being central repository will require updates on every changes i.e. branches, commits etc. Git being distributed only cares of changes when merging happens between two different repo, typically local repo and remote repo, or two branches. So to actually get file from subversion, you actuslly request it to read particular directory and file like traditional filesystem where you would keep reading first file and then go to next and so on while on git all the commits till files latest state gets recreated from begining with commit history. Benefit of timeseries like commit data is, you can have separate commits with different meta data and when multiple users merge these to central repository, each commit hash ensures that relevant changes are reflected on repository collectively. As each independent commit is made sure no user writes same lines on next commit if their heads are not upto date with current repository state. Git is like local repository, every git repo is full fledged repository on it's own. We just keep them in servers to be accessible to others along with ACL that may forbid access. Unlike traditional version control systems, git is distributed - meaning each node will have their own copy, when you merge it with other node, magic of commit history happens which creates journal entry in commit history (metaphorically) On other hand with traditional version control, files are kept centrally and you have to notify it for branches and commits which adds extra trips, not so convenient when lots of people have their own copies. Git protocol by design raises any conflicts and will not let you merge or commit till change history is clear and code can be pushed / merged on top of existing commit. All done by keeping track of changes in a tree like structure of commits and branches where changes data is kept and then further packed into files and compressed to save space. That is still very vauge explanation on what exactly happens as different version control systems will work differently, git on other hand is more like commit journal where entries are permanent and self sustaining by nature.
@LordNementon
@LordNementon 2 жыл бұрын
Under git you can create thousand of branches, it won't take gigabites on your drive. Create a branch under SVN, it will do a full copy of exisiting code Create a branch under git, it will only save the diff That a huge game changing
@flyball1788
@flyball1788 2 жыл бұрын
SVN can also work with a checkout-lock flow where only one person can edit a file at any one time. There's huge debate about whether this is better than copy-modify-merge (like GIT, but subversion can also do it) and in my experience (ASIC designer) it's highly dependant on team/corporate structure, design flows and design tasks. However, I find locking infinitely preferable when it comes to binary files.
@Ceelvain
@Ceelvain 2 жыл бұрын
I'm always a bit worried about this kind of presentation of git. People tend to confuse git and github. This video just confuse them some more.
@ibtarnine
@ibtarnine 2 жыл бұрын
beetah. the beetah version.
@Luncher91
@Luncher91 2 жыл бұрын
I love git but I miss the main-only approach in this video which a lot of CI/CD people tend to recommend. Do you plan a video on that instead of the deprecated github workflow?
@Jonteponte71
@Jonteponte71 2 жыл бұрын
That's only for codebases where you never have to maintain older versions of the code. Every user is always on the bleeding edge. I work in Financial IT where that is definitely not the case.
@Luncher91
@Luncher91 2 жыл бұрын
@@Jonteponte71 I agree with you. The point is you do not have to use a branch structure like beta versions or a release branches and even feature branches. Reducing the amount of branches which are supposed to be merged again reduces the overall clutter and effort.
@ZT1ST
@ZT1ST 2 жыл бұрын
In my personal experience with CI/CD development - our solution was to commit to branches, push them up, then make GitLab specific Merge Requests into a staging branch, and then every so often a Merge Request from Staging into Main - with each merge request squashing all the changes since the last time they merged into the branch above it (i.e. Stage -> Main would only merge the newest stuff since the last time it merged) into a single commit that is committed to the branch above it. Which effectively *looks* like we just commit to the main-only approach, but isn't *quite* like that.
@georgehelyar
@georgehelyar 2 жыл бұрын
Yes we use trunk based development and CI/CD at my work. Definitely better than feature branching with e.g. git flow. You can still support multiple released versions easily. We tag when we release a version and if we ever need to patch it we just create a branch from that tag, which eventually gets released with it's own tag and the active branch is deleted. The commit structure is still a tree, there just aren't any long lived branches other than the main branch. You may sometimes have to push the same fix to multiple versions but it's usually pretty easy to just cherry pick it across. We don't make a branch as a team, work on it for 2 weeks and then try to merge it back into the main branch. The real problem with long lived feature branches is merging. If you have 2 weeks of changes to merge and another team has 2 weeks of changes to merge, it will be painful. If you only have an hour of changes to merge at a time it won't be as bad.
@ddanielsandberg
@ddanielsandberg 2 жыл бұрын
@@ZT1ST In CI/CD we don't have "QA branches", "staging branches" or "production branches"...
@thuokagiri5550
@thuokagiri5550 2 жыл бұрын
Who is the mind behind git?
@debanjanbarman7212
@debanjanbarman7212 2 жыл бұрын
Linus Torvalds, the creator of Linux.
@Catz1010
@Catz1010 2 жыл бұрын
Linus Torvalds, who also created Linux.
@netadmin-fraser787
@netadmin-fraser787 2 жыл бұрын
Linus Torvalds had issues distributing code hence why he made Github :)
@thuokagiri5550
@thuokagiri5550 2 жыл бұрын
The dude is a god
@teddy4782
@teddy4782 2 жыл бұрын
@@netadmin-fraser787 He made Git, not Github. I do believe he's specifically not fond of Github.
@sabuein
@sabuein 2 жыл бұрын
Thank you.
@rikwisselink-bijker
@rikwisselink-bijker 2 жыл бұрын
Bottom line for beta versions: you're getting early access to new features, and new bugs.
@franchello1105
@franchello1105 2 жыл бұрын
I have been using Team Foundation Server with Git. I think its better with Git.
@crappymeal
@crappymeal 2 жыл бұрын
theres talk about using this technology to build new democratic decision making processes or an entirely new form of social structure
@sembutininverse
@sembutininverse 2 жыл бұрын
thank you 🙏🏻
@koushikchakraborty3000
@koushikchakraborty3000 2 жыл бұрын
The explainton is so on point, Microsoft could use this on the Git help docs.
@JimLeonard
@JimLeonard 2 жыл бұрын
You know, tripods are incredibly cheap. With 2 million subscribers, pretty sure you can afford to buy one.
@philosuit
@philosuit 2 жыл бұрын
Yeah agree
@Not.Your.Business
@Not.Your.Business 2 жыл бұрын
I think the lack of a tripod is an intentional artistic decision. I'm not commenting about its usefulness though.
@ShaunHusain
@ShaunHusain 2 жыл бұрын
I think is meant to have the camera man be a stand in for the audience to ask follow up questions etc as well, doesn't require handheld but I guess seems more natural.
@JimLeonard
@JimLeonard 2 жыл бұрын
Maybe buy a gimbal then, or a stabilized lens or camera body. Would be nice to watch these videos without worrying about motion sickness.
@bradyconnor
@bradyconnor 2 жыл бұрын
Found the comment I was looking for so I don't need to make my own. A stable camera is a simple and fundamental principle to a quality video.
@davidgillies620
@davidgillies620 2 жыл бұрын
ABR. Always Be Rebasing. Git pull is dangerous. Rebase is generally preferable. And learn about snapshotting, the stash and cherry-picking.
@ViAikBreeck
@ViAikBreeck 2 жыл бұрын
a beeta version
@paulhammond8583
@paulhammond8583 2 жыл бұрын
Someone needs to explain to you how automated testing works. In reality, the way we prevent issues from cropping up is with automated testing. This is also why any dev should be able to merge, and trunk based development, where there are no release branches and stuff is just merged directly into main very often (multiple times per day) is the best branching model used by the best performing teams around the world.
@KyleMck
@KyleMck 2 жыл бұрын
We've actually just switched to this model, before all of us developers would branch and merge into a "develop" branch, this would then be pushed to a "release" branch for regression testing, before finally being merged into "master" and going live. But now we've spent tonnes of time building up automated tests, which get ran everytime a pull request is made (and will fail the PR if a test fails!) and have switched to only using a single "master" branch. The overall team confidence has gone up, we're seeing a lot less issues during regression, and we get to spend more time developing new features instead of bugs!
@KepaTairua
@KepaTairua 2 жыл бұрын
We're getting closer to that branching strategy. We went from 3 long lived branches (main, Dev, sit) with feature/* and bugfix/* branches for each ticket created from Dev. To just 1 long life branch (main), release/* candidate created from main, and the feature/* bugfix/* branches from the release. Definitely sped us up, so I think we'll eventually get there
@aravindpallippara1577
@aravindpallippara1577 2 жыл бұрын
It's a methodology and has nothing to do with git the software. It's like claiming if you wanted to learn about for loops you should also learn about orm vs database querying.
@jjudin
@jjudin 2 жыл бұрын
This usage of feature branches depicted in this video is one of the general anti-patterns of using git for development in almost all the cases. They have a nice idea of finishing complete and tested work pieces. But when you scale that model up to several people or teams (not to mention about hundreds), you will get integration issues just before deadline that then may actually take quite a long time (months) to solve. And the bigger the organization, the worse it gets. That's why continuous integration and trunk based development is all the rage in places where development efficiency matters.
@TimothyFish
@TimothyFish 2 жыл бұрын
Even with automated testing, you would want to work in a dev branch. You may be calling your dev branch the main branch, but what you don't want is to be preparing for a release and come in to find that the nightly build has failed or some tests don't pass. Plus, on large projects, you may not be able to run all of the test every day, so you may have test failures that don't show up right away. You always need code that has all of the tests passing and isn't being modified by developers.
@schnitzelsemmel
@schnitzelsemmel 2 жыл бұрын
could you somehow combine the merging with an AI that collects data about human corrections and learns from them?
@CoopersGaming
@CoopersGaming 2 жыл бұрын
just use 'git push -f' the f means friendship
@klamberext
@klamberext Жыл бұрын
Bit disappointed in this git series. I would have liked a deeper dive into how diff algorithm works and how the conflicts are calculated. Also how merge and rebase work inside a git. I use git all the time, but the inner workings are a little mysterious.
@tramsgar
@tramsgar 2 жыл бұрын
Sounds fun, working with software, right?
@dfmayes
@dfmayes 2 жыл бұрын
Ha ha. I wrote software for 30 years. Every year that went by it was more of a chore because of how elaborate systems became.
@thuokagiri5550
@thuokagiri5550 2 жыл бұрын
What if git would integrate a feature to allow translation of language translation on high-level and to allow people from different backgrounds working in the same codebase
@netadmin-fraser787
@netadmin-fraser787 2 жыл бұрын
The quality of translations aren't always the best, maybe in the future.
@Ceelvain
@Ceelvain 2 жыл бұрын
Git by itself, both can and will never do it. Gitlab and github have absolutely nothing to do with git itself. They are merely web frontends for git. Git is more or less just a file system. A versioned file system as there have been many others. It stores your data on disk along side the metadata and does so for several versions of the files. So, can a file system allow random people to translate whatever? Well, yeah, in the end it's just a file. All you need is an application that presents the translation files nicely and perform the commits. But it's not git's job by a vast margin.
@BarelyGoodTV
@BarelyGoodTV 2 жыл бұрын
I learned SVN in University for literally no reason
@ddanielsandberg
@ddanielsandberg 2 жыл бұрын
You learned version control.
@BarelyGoodTV
@BarelyGoodTV 2 жыл бұрын
@@ddanielsandberg I learned version control on the job. I don't like to give my university credit for much
@ddanielsandberg
@ddanielsandberg 2 жыл бұрын
@@BarelyGoodTV Lol. Sad, but true. :D
@TheNewton
@TheNewton 2 жыл бұрын
Without code examples this is very abstract; it can help to visualize it physically using molecular models or tinker toys.
@akashpawar9058
@akashpawar9058 2 жыл бұрын
akash
@rylaczero3740
@rylaczero3740 2 жыл бұрын
We need videos on Mercurial as well.
@rickymort135
@rickymort135 2 жыл бұрын
No
@rylaczero3740
@rylaczero3740 2 жыл бұрын
@@rickymort135 ?
@SubTroppo
@SubTroppo 2 жыл бұрын
The computer which is my phone should say "no" more often, followed by "What the bleep were you thinking, you bleeping bleeepers?". ps I used to work in configuration management (product releases). With software it was like herding cats and if someone told me about an unofficial hacker bug-fix "out in the wild", I had to say that I didn't want to know. Hardware was maybe worse because it was often released as an "announceable", but in fact the factory was unable to deliver.
@HemogIobin
@HemogIobin 2 жыл бұрын
I expected a deeper explanation as that's what computerPhile always does , this was too basic
@markcuello5
@markcuello5 Жыл бұрын
HELP
@netadmin-fraser787
@netadmin-fraser787 2 жыл бұрын
I love the utility of Github
@bluegizmo1983
@bluegizmo1983 2 жыл бұрын
You better GIT out of here with that nonsense! 😂
@Ermude10
@Ermude10 2 жыл бұрын
Maybe unpopular opinion: While I love git (and github etc) for it's power and uses, I think the whole framework is a bit dated now and introduces many convoluted processes to ship code in practice, especially within larger firms such as requirements to review even the most mundane changes. There has to be better ways and processes to collaborate and work with code by now...
@ddanielsandberg
@ddanielsandberg 2 жыл бұрын
Yes. It's called pair programming and Continuous Integration.
@Ermude10
@Ermude10 2 жыл бұрын
@@ddanielsandberg No, that's complementary processes to git, it doesn't remove the need of git.
@ddanielsandberg
@ddanielsandberg 2 жыл бұрын
@@Ermude10 I'm sorry, I was unclear. I never argued against Git. I commented about your comment about convoluted processes and "requirements to review even the most mundane changes" and that there have to be better ways to collaborate. None of which has anything to do with Git. There are probably tools out there that achieve the same things as TBD/CI without the overhead of Git but I don't know... OK?
@Ermude10
@Ermude10 2 жыл бұрын
​@@ddanielsandberg Aha, that makes more sense. But yeah, I still think those processes are often used in conjunction with git as they ultimately target different problems. And I think it very much has to do with git, because git is often the tool or framework that dictates how we make changes and how we collaborate.
@geronim00
@geronim00 2 жыл бұрын
code reviews and pull requests sounds to me like "I might be incompetent, please check my code while I wash my hands, thx"
@Arjunsiva
@Arjunsiva 2 жыл бұрын
Bitbucketers 🙋‍♂️
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
Bitbucket started out as an online repo service only for Mercurial. It got forced into providing Git as an alternative, by popular demand. And then the popularity of Mercurial diminished to the point where it wasn’t worth supporting any more. So that is now gone.
@zxuiji
@zxuiji 2 жыл бұрын
I don't see why git doesn't just implement a network mutex and only allow updates to the file by whoever has the mutex,, a good code editor can then just take the mutex before allowing the dev to work on the file & the changes automatically before unlocking the file **Edit:** What I'm imagining for the call flow server end is something like this: // some request like "git lock" err = LockThreadMutex( file_list_mutex ); // Possible errors: list was destroyed ... err = LockFileMutex( file_list_array[i], user_id ); // Possible errors: file was removed/rolled back over corruption or something FreeThreadMutex( file_list_mutex ); // Exit thread/Wait for next request to process ... // Some request like "git unlock" err = LockThreadMutex( file_list_mutex ); ... err = FreeFileMutex( file_list_array[i], user_id ); // Possible errors: file removed/rolled back by server over corruption or something, not the same user who locked it ... FreeThreadMutex( file_list_mutex );
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
File locking is how version control used to work back in the 1980s. Because it was thought that, if two people simultaneously made changes to the same file, the world would end or something.
@zxuiji
@zxuiji 2 жыл бұрын
@@lawrencedoliveiro9104 That's not why I thought of file locking, I just figured that a lot of time & effort would be saved if the dev didn't have to spend time merging changes manually since they would already be in there before the editor allows them to work on the file, it also serves as an indictor that they might not need to fix whatever they were going to fix & instead go work on something else for a while before retrying the file.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
@@zxuiji The problem with locking is it slows down development and makes things awkward, like when you find that somebody has locked something they didn’t need to, and you have to ask them to unlock it so you can work on it. That’s why locking was done away with. That’s why productivity is so much greater with modern VCSes than those older, locking-based ones.
@UpLateGeek
@UpLateGeek 2 жыл бұрын
Little known fact, but people who use git are known as gits. It's true. I know, I too was shocked to find out after using it for some time that I am indeed a git. _[insert The More You Know meme here]_
@djp_video
@djp_video 2 жыл бұрын
Git is a mess. I have to fix issues it creates multiple times per week. I hate it. On my team we see major issues all of the time -- code that has been committed and pushed from one developer not showing up on another developer's computer even though everybody has pulled and pushed. It also freaks out every time two developers add code to the same section of a file when they are both clearly separate additions, which happens a lot with common IDEs. It wouldn't be hard to detect that both new functions are new and include both... but, no... since they've both been added in the same location they MUST be the same function, even without completely different names and signatures. Git is dumb.
@kleinesfilmroellchen
@kleinesfilmroellchen 2 жыл бұрын
I think you aren't using git properly, because I can't relate with my 100+ daily commit project.
@ApprendreSansNecessite
@ApprendreSansNecessite 2 жыл бұрын
Wouldn't fixing this second issue imply that git is able to analyse code in every possible programming language or even every possible structured file format? It seems a bit out of scope to me.
@malbacato91
@malbacato91 2 жыл бұрын
@@ApprendreSansNecessite not necessarily. git offloads merges to a different program (configurable per file type). by default it uses an internal diff3 solver for text files and a binary choice merger for everything else, but there's little reason why you couldn't write an intelligent merger for your own file types which git would use. why that isn't done very often it a question I don't know the answer to (searching git mergetool on the web brings up basically no projects that implement it)
@djp_video
@djp_video 2 жыл бұрын
@@ApprendreSansNecessite Not at all. Git should be able to detect that two developers have added code (any code, regardless of language) in the same section of the file and simply include both. The code after the new sections is unchanged... it should be easy enough to determine that both versions have additions and just include them both.
@djp_video
@djp_video 2 жыл бұрын
@@kleinesfilmroellchen Using it properly? You commit a change, you pull, you push. There aren't many things that you can do wrong.
@JamesThunes
@JamesThunes 2 жыл бұрын
If you're not using branches, you really should try it out. Even for projects with a single developer, it really does make things much cleaner and easier to work with.
@andydyer6591
@andydyer6591 2 жыл бұрын
I think the biggest benefit of doing this also as a solo developer is that it conditions you to work on one issue or functionality at a time. Your code is then much less messy than if you tried to do several things at once and ended up with a complex web of dependencies.
Git Overview - Computerphile
16:28
Computerphile
Рет қаралды 188 М.
Hacking Out of a Network - Computerphile
25:52
Computerphile
Рет қаралды 240 М.
Harley Quinn's revenge plan!!!#Harley Quinn #joker
00:59
Harley Quinn with the Joker
Рет қаралды 24 МЛН
КАКУЮ ДВЕРЬ ВЫБРАТЬ? 😂 #Shorts
00:45
НУБАСТЕР
Рет қаралды 3,2 МЛН
Prank vs Prank #shorts
00:28
Mr DegrEE
Рет қаралды 7 МЛН
My Cheetos🍕PIZZA #cooking #shorts
00:43
BANKII
Рет қаралды 27 МЛН
Reverse Engineering - Computerphile
19:49
Computerphile
Рет қаралды 184 М.
Uses of Information Theory - Computerphile
14:48
Computerphile
Рет қаралды 74 М.
WiFi's Hidden ____ Problem - Computerphile
12:05
Computerphile
Рет қаралды 598 М.
Mythical Man Month - Computerphile
17:18
Computerphile
Рет қаралды 137 М.
Internet Congestion Collapse - Computerphile
20:16
Computerphile
Рет қаралды 93 М.
~/.dotfiles in 100 Seconds
13:54
Fireship
Рет қаралды 415 М.
I tried using AI. It scared me.
15:49
Tom Scott
Рет қаралды 7 МЛН
Man in the Middle & Needham-Schroeder Protocol - Computerphile
24:32
So You Think You Know Git - FOSDEM 2024
47:00
GitButler
Рет қаралды 1,1 МЛН
Git MERGE vs REBASE: The Definitive Guide
9:39
The Modern Coder
Рет қаралды 105 М.
Harley Quinn's revenge plan!!!#Harley Quinn #joker
00:59
Harley Quinn with the Joker
Рет қаралды 24 МЛН