From 1b98affdddd9013089ca233c813c1a0ff7d55b50 Mon Sep 17 00:00:00 2001 From: Amigo <49749100+aamigo@users.noreply.github.com> Date: Sat, 26 Oct 2019 07:18:46 +0200 Subject: [PATCH] Updated 063 Proposed Collaborative Workflow in JCB (markdown) --- 063-Proposed-Collaborative-Workflow-in-JCB.md | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/063-Proposed-Collaborative-Workflow-in-JCB.md b/063-Proposed-Collaborative-Workflow-in-JCB.md index a0694ef..7e288e1 100644 --- a/063-Proposed-Collaborative-Workflow-in-JCB.md +++ b/063-Proposed-Collaborative-Workflow-in-JCB.md @@ -117,8 +117,23 @@ If you refresh the page, it'll say that it is 1 commit ahead. Now I think at thi Now when this pull request with your changes have been fully accepted and you haven't made further changes to this component, then the next part of the process needs to happen. If I can illustrate what has happened so far, your first forked the component, then you imported components JCB package, you have made changes, in this case we didn't make changes, but you could have added a new field or a new view. Then compiled it. In your local development you committed to changes to the git repository. Also link [00:27:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h27m47s) and commit the changes to git. You have put the changes to the forked version. You have made a Pull request. -### Json Package +### Contribute To Joomla Component - Finalize - Contribute To JCB Mapped Components + +[00:27:58](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h27m58s) + +The next step is the place where the Json package manager is going to come into play. Because you want to contribute the changes not only to the actual Joomla Component which already is this pull request, it's contributing it Joomla Component area of the component. When this has been finalized the next step is to contribute it to the JCB Mapped Component. The Next Step is the crucial one because then everybody who's [00:28:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m33s) helping to develop, the mapped component get this update via JCB package manager. + +### Demonstration On The Next Step + +[00:28:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m42s) + +We're going to demonstrate the next step. Let's say at this point your commit has been accepted and merged into the root master branch of the repository. Then it should look like this, it will say Merged. If we are going to look at Commit it says: Updated the component with the improvements made by JCB. That was the point which the next step must take place, only once the changes you've made has been accepted in the Joomla Component [00:29:20](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m20s) source of the project. The Next Step is to do that with JCB package as well. All VDM JCB packages are kept in the JCB packages repository. The next thing you will need to do is you will need to fork this repository. I have already forked this repository a few days ago, but you'll see that [00:29:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m47s) it's already 4 commits behind the master branch. I can't really do anything until I get in sync again with this master branch. Making any commits now will mess things up and the first thing I'm going to do is make sure that this group, this repository is in sync with the master branch. This repository needs to be cloned down to my local system. Those of you that have quite a number of repositories and keeping them all in sync, is a pain. + +### Shell Script - UpdateForks + +[00:30:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m22s) + +We have this little shell script UpdateForks which is very useful. Even if you're going to run the shell script itself, you can at least peek at some of the commands, how to get this done. What it does, it runs to get all the repositories that you have forked and then it updates them. There are a number of [00:30:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m49s) SSH files that you should have a look at. I'm going to open the UpdateRepos.sh. I have the file open and I realize this is not going to work, unless you are able to understand Bash. You most probably not going to be able to follow this. Let me rather do the commands one at the time [00:31:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m13s) inside of that Repo. But at least you know that there is a package here and if you do know Bash, then this is most certainly something to try out. It's working very well. I'm using it quite a lot. It's keeping all my forked repositories up to date and in sync with the master branch. If I work with them that are ready and I'm able to jump in and do it. [00:31:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m42s) But it's not that hard to do it manually. If you haven't cloned down the repository to your local developing environment, then you will need to do that first. Nothing of what I'm going to show you will work unless you've done that. There are a few documentations that GitHub has that helps with this quite a lot. If you have windows or Mac or Linux, you can go to these URLs or type in Google: update my fork repo and do a search. [00:32:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m19s) ???? - -The next step is the place where the json package manager is going to come into play. Because you want to contribute this changes not only to the actual Joomla Component which already is being [00:28:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m13s) You know this this Pull request Is contributing it To this area of the component When this has been finalised The Next Step Is to also contribute it To the JCB mapped component And this one is Crucial because then everybody who's [00:28:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m33s) Helping to develop The mapped component Get this update Via JCB package manager And Ok so we're going to now demonstrate the next step So let's say at this point your commit is been accepted and merged into the Root The master branch Of the repository [00:28:55](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h28m55s) Then it should look like this it will say merged And if we were gonna look at this here It says now update the component with the improvements made by JCB Ok so Really That was The the point and which the next step must take place only once The changes you've made has been accepted In the Joomla component [00:29:20](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m20s) source Of the project Now The Next Step is to do that with JCB package as well Now all very VMS JCB packages are kept In the JCB packages repository So the next thing you need to do is you need to fork this repository Now I already forked this repository a few weeks ago a few days ago But you'll see that [00:29:47](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h29m47s) It's already 4 commit behind the master branch I can't really do anything Until I get in sync again With this master branch Making any commits now we'll mess things up and so First thing I'm going to do is make sure that this group this repository Is In sync With the master branch So obviously I"ll needed to be this repository needs to be cloned down to my local system [00:30:16](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m16s) Those of you that have quite a number of repositories and keeping them all in sync is a pain When is the shell script update forks Which is very useful Even if you're gonna run the Shell script itself you can at least sort of Peek at some of the commands How to get this done The way this does the moment what it does is it runs I know gets all the repositories that you You have forked and then it also updates them So there are a number of [00:30:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h30m49s) SSH files that you should have a look at I'm I'm just gonna open this Update repositories Well now I got the file open here I realize ok this is not gonna work Unless you are able to understand Bash You must probably not gonna actually Be able to follow this So et me rather do the commands one at the time [00:31:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m13s) Inside of that Repo But at least you know that there is a package here And if you do know Git a Sorry I mean Bash Then this is most certainly something to try out It's working very well I'm using it quite a lot And It's keeping all my forked repositories up to date and then sync With the master branch so that if I work with them That that it already is ready and I'm able to just you know Jump in and do it [00:31:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h31m42s) But it's not that hard to do it manually anyway So let's do that If you haven't cloned down the repository to your local developing environment Then you need to do that first nothing of what I'm gonna show you now will work unless you've done that Now few documentations that GitHub has that helps with us quite a lot so if your windows or Mac or Linux Yeah you can actually go to these URLs or just type in Google update my fork repo And do a search And then look for the one Which sort of [00:32:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m19s) Well this is a place you want end up at I then I'm gonna tell you that you must first configure Your repo to actually see the remote upstream So click on that and do this first And then we'll come back to this one First we do is we gonna just check out In a repo what is the remote branches And so we see that it only has this To remote branches And it fetch and pulls from those [00:32:52](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m52s) Now we want to add the remote branch Which is the upstream branch And we gonna use This one and Add the original owner so this one is your name This one must be the original owners name And the original repositories name So those two Values you need to You know update The way to get them is go back to your Repo [00:33:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m17s) And just Click on this Value here This should take you to To that Original branch And then you can just get it by copying This value here So then your type remote [00:33:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m33s) Add upstream Like it says there on GitHub And you will Control shift v To paste in command line Or those of you you can also paste With the mouse And so there is the repository I have a little [00:33:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m54s) Change to my SSH which means I use VBM To identify the server name That is something most of you wouldn't need to do And we'll click enter Ok so now If we do that Remote branch will now see that there are two Remote branches Two branches that are remote [00:34:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m17s) And the one is the origin in one is the upstream And that now is Time for The Next Step Which is the sync the fork So first what we will do It will fetch the upstream This will basically fetch the files That has changed From the upstream Which at this stage we know [00:34:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m42s) Is the Main Master branch Then just to make sure that you are on the master branch We are going to Say Git Checkout Master To make sure you are on the master branch next We are going to [00:35:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m09s) Merge The upstream branch into your master branch Now this will look differently depending on what happened But It will give you a bunch of emotion and then This branch is now basically The local branch is now in sync With master branch Upstream Master branch now To get this [00:35:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m34s) To also update your Branch on GitHub you just need to get Push And this will push the changes Back to git Now there are many things that can actually Go wrong or Sort of work out different In in Git And so I'm not here to teach you how to use git [00:35:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m57s) if you run into Some Grey areas or difficult issues You need to Google and Figure out how to get this done This is just sort of Illustrating The Proposed workflow Of developing components in JCB while collaborating With the greater community [00:36:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m18s) Around a JCB package Those of you that watched The tutorial on how to contribute To the community Directory Of JCB packages Then much of what I'm gonna be explaining further Is already covered in that previous tutorial And So we are almost finished with the circle [00:36:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m41s) We started by forking the JCB sorry the Joomla component And importing the JCB package Then making changes to that And then compiled it And pushed those changes to the Joomla Repo And when those changes were accepted Into that Repo We now Went to the place where we found the JCB package which in VDMs case [00:37:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m06s) Is the VDM package area Where if it was a community component then you would follow The explanation given to you in that previous tutorial and at this point what we going to do is we basically gonna export the JCB package Add it to these packages that we have here And run our hash so if we look at this LS - LA We've got a Hash.sh file here But if we want it now There there should be no changes to the repo [00:37:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m42s) And Just as we expected nothing changed So everything is up to date at the moment And so the only file we are going to change Is basically these three files here Because we are gonna update this package by exporting it from JCB With the changes we've made Now Since you've contributed those changes to this Question and answers [00:38:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m09s) Joomla component repository Those who are gonna validate this Push switch we're about to make I'm gonna go back to that repository And make sure that you're not changing things other than we should contribute it there in fact But some point my Anticipation is to actually build a bot which would validate this for us so that this stage it will still be live with manual so be slow [00:38:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m36s) But eventually will speed it up and the validation will happen faster and more efficient So you and JCB We now basically click on questions and answers And there is one little snag here which I realized I haven't actually resolved it And that is that you now need to actually have the same Key for this package Set in the admin or rather in the component As the one that the developer uses And that can only be given to you by the original owner of this package [00:39:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m13s) Which in this case is myself So and where does that what is that mean it means that this export key Must be the same one As the one that the package was compiled with originally Now if you have imported this and you see a key here You can be 100 % sure it is not the same key Because this is encrypted field You are basically just seeing the encrypted value Not the actual key The actual key was never exported [00:39:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m45s) Unencrypted it always remains encrypted and that's why we have the encrypted Fields all around JCB Not because we think is gonna make the database more secure necessarily That is because when we export and move data around That which is secret stay secret And only within that specific component developing environment of those keys unique So the way you get this is you need to communicate With that developer and actually ask him permission Whether you can extend on this package and then he needs to manually give you this key And so [00:40:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m22s) Since I can ask that From From for myself I'm gonna just add that key here to be sure that it is the same key With which it originally was compiled with Ok so now we've got those keys to be the same And it's sort of the way to tell everyone that you and that other developer Are an agreement That this in fact it possibly could happen That once your pull request To the JCB sorry to the Joomla component [00:40:53](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m53s) Repo Has been merged and accepted Then that team needs to give you the key That's how I think it'll work I'm not hundred percent sure this gonna be cemented Always got it changed But you do realize that trust and collaboration goes hand in hand So they need to give you the key if it's not a JCB package that actually requires a key Then it is a different story And yet the same sort of procedure will reply except the exchange of keys won't be necessary [00:41:27](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m27s) But now that you've got the key in place we basically click here And exported the JCB package So we now have this package Here in this folder And we now need to move it Into the repository Which is also Obviously the one we have now synchronised with our forked version So I have it here I'm gonna copy it actually gonna cut [00:41:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m54s) let's cut it From my temporal folder in my Joomla website To this repository paste it in And he is gonna ask if it should be Replace and we're gonna say yes Replace it And there we go we've got the package updated Now And we go back to command line And we do [00:42:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m17s) Git diff We'll see that That file is changed Now we also need to run this sh This hash file To update the And Now git Status [00:42:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m36s) we'll see if those files have updated So You'd possibly I'm not sure what VL Convention but I think Your pull request to the Joomla Repository of this component The ID of that could possibly be useful here It's just to sort of give a heads up and validate that you did First Contribute the code To the actual Joomla component and it was accepted [00:43:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m08s) And now this is the change to the package Which also now needs to be looked at So our case This is the pull request URL I think we just gonna use that in our commit message And Use the same commit message So it should looks something like this Update the component with the improvements made in JCB and maybe say ref [00:43:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m45s) And then The repositories username or organisation name The repository name With this Hash one Since the The pull request was number one Ok that would Do and then Will submit that [00:44:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m08s) And Now we push those changes to our Version of the repository Going back to GitHub then after the push has been submitted and we've look at this commit You see it actually has a link And this link is to that issue on GitHub To be easy for us to trace where you have contributed it to the actual Joomla component And why it's all happened being the same comment message [00:44:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m45s) Now this stage you again would make a pull request To the master branch Where we will basically review The changes Now again at this stage We don't have pull request templates and everything in place But as soon as they do get to be placed there then please follow those instructions Will try to be as thorough as we can But obviously being a community is always up for discussion and we will Try and [00:45:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m17s) Do this The right way At the moment we can put the ref in the description and then just again the comment in the Title if it's a long comment then just put Maybe a summary here short one and put the wrong comment back in here Ok and then you basically created the pull request At this point discussion will begin Validating to see that you followed all the procedures And that this package is stable and ready to become part of the Actual [00:45:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m49s) Repo And then once accepted it will be merged into the master branch Become available to the rest of the community So that's At the moment Illustration of what I consider a collaborative workflow in JCB So we Where at Next Step [00:46:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m09s) And we had to move to JCB Where They have now accepted and merged The Changes you made To the Joomla component And now the owner has given you the original key Because they trust The changes you've made And [00:46:28](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m28s) you know forked the JCB package repository Make sure you have it in sync if it's an old fork Then update the key with the key from the owner Then export to JCB package Add it to the local repo with a commit message and the reference As illustrated Then push the changed to your forked repo and make a pull request So here Is the workflow This could [00:46:55](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m55s) Become nicely documented I suppose Someone can take that upon them to even Make some nice chart I maybe not the correct guy for the job And this might Expand and become maybe much more advanced or it could be made more simple But in a nutshell just [00:47:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m19s) Below an hour We're at 47 minutes sort of This is the explanation of the collaborative Workflow with external Partners Around a JCB package Once this pull request gets merge we are basically back At the that this is in sync [00:47:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m42s) And This is in sync And this will continue and I'll go on and on And obviously others will contribute so There there are some other complexities also In this process But that is sort of what I can see happening I know that when you Pull the changes from the previous package you know this Where is it [00:48:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m09s) You know the import the JCB package There is the option to import it as a clone Or to import it with a merge Now the idea would be that you will only import and merge your JCB package With the global Repo As they accept This pull request And so that You would always stay in sync with what actually is currently the community version Of the package [00:48:37](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m37s) And you could import it it as a clone and make changes to the Clone and effect that will not effect the Main Master Version But this all is a trial and error process which You would Sort of show, teach yourself how that works And so my idea is to do that within a blank install try it out Pull in some of the free version play around with it Until you become confident [00:49:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m06s) And then you are able to also start contributing To not only the community packages But also VDM packages to which you've got access And so help improve those components For everyone Well thanks for watching I hope this is insightful And I'm sure there might be things that some of you would not able to follow And I would encourage you to just Google that and do some tutorials and [00:49:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m33s) Then I'm sure your will Manage. Ok thanks for watching. \ No newline at end of file +This is a place you want end up at: you must first configure your repo to see the remote upstream. Click on that and do this first And then we'll come back to this one First we do is we gonna just check out In a repo what is the remote branches And so we see that it only has this To remote branches And it fetch and pulls from those [00:32:52](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h32m52s) Now we want to add the remote branch Which is the upstream branch And we gonna use This one and Add the original owner so this one is your name This one must be the original owners name And the original repositories name So those two Values you need to You know update The way to get them is go back to your Repo [00:33:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m17s) And just Click on this Value here This should take you to To that Original branch And then you can just get it by copying This value here So then your type remote [00:33:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m33s) Add upstream Like it says there on GitHub And you will Control shift v To paste in command line Or those of you you can also paste With the mouse And so there is the repository I have a little [00:33:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h33m54s) Change to my SSH which means I use VBM To identify the server name That is something most of you wouldn't need to do And we'll click enter Ok so now If we do that Remote branch will now see that there are two Remote branches Two branches that are remote [00:34:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m17s) And the one is the origin in one is the upstream And that now is Time for The Next Step Which is the sync the fork So first what we will do It will fetch the upstream This will basically fetch the files That has changed From the upstream Which at this stage we know [00:34:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h34m42s) Is the Main Master branch Then just to make sure that you are on the master branch We are going to Say Git Checkout Master To make sure you are on the master branch next We are going to [00:35:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m09s) Merge The upstream branch into your master branch Now this will look differently depending on what happened But It will give you a bunch of emotion and then This branch is now basically The local branch is now in sync With master branch Upstream Master branch now To get this [00:35:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m34s) To also update your Branch on GitHub you just need to get Push And this will push the changes Back to git Now there are many things that can actually Go wrong or Sort of work out different In in Git And so I'm not here to teach you how to use git [00:35:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h35m57s) if you run into Some Grey areas or difficult issues You need to Google and Figure out how to get this done This is just sort of Illustrating The Proposed workflow Of developing components in JCB while collaborating With the greater community [00:36:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m18s) Around a JCB package Those of you that watched The tutorial on how to contribute To the community Directory Of JCB packages Then much of what I'm gonna be explaining further Is already covered in that previous tutorial And So we are almost finished with the circle [00:36:41](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h36m41s) We started by forking the JCB sorry the Joomla component And importing the JCB package Then making changes to that And then compiled it And pushed those changes to the Joomla Repo And when those changes were accepted Into that Repo We now Went to the place where we found the JCB package which in VDMs case [00:37:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m06s) Is the VDM package area Where if it was a community component then you would follow The explanation given to you in that previous tutorial and at this point what we going to do is we basically gonna export the JCB package Add it to these packages that we have here And run our hash so if we look at this LS - LA We've got a Hash.sh file here But if we want it now There there should be no changes to the repo [00:37:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h37m42s) And Just as we expected nothing changed So everything is up to date at the moment And so the only file we are going to change Is basically these three files here Because we are gonna update this package by exporting it from JCB With the changes we've made Now Since you've contributed those changes to this Question and answers [00:38:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m09s) Joomla component repository Those who are gonna validate this Push switch we're about to make I'm gonna go back to that repository And make sure that you're not changing things other than we should contribute it there in fact But some point my Anticipation is to actually build a bot which would validate this for us so that this stage it will still be live with manual so be slow [00:38:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h38m36s) But eventually will speed it up and the validation will happen faster and more efficient So you and JCB We now basically click on questions and answers And there is one little snag here which I realized I haven't actually resolved it And that is that you now need to actually have the same Key for this package Set in the admin or rather in the component As the one that the developer uses And that can only be given to you by the original owner of this package [00:39:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m13s) Which in this case is myself So and where does that what is that mean it means that this export key Must be the same one As the one that the package was compiled with originally Now if you have imported this and you see a key here You can be 100 % sure it is not the same key Because this is encrypted field You are basically just seeing the encrypted value Not the actual key The actual key was never exported [00:39:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h39m45s) Unencrypted it always remains encrypted and that's why we have the encrypted Fields all around JCB Not because we think is gonna make the database more secure necessarily That is because when we export and move data around That which is secret stay secret And only within that specific component developing environment of those keys unique So the way you get this is you need to communicate With that developer and actually ask him permission Whether you can extend on this package and then he needs to manually give you this key And so [00:40:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m22s) Since I can ask that From From for myself I'm gonna just add that key here to be sure that it is the same key With which it originally was compiled with Ok so now we've got those keys to be the same And it's sort of the way to tell everyone that you and that other developer Are an agreement That this in fact it possibly could happen That once your pull request To the JCB sorry to the Joomla component [00:40:53](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h40m53s) Repo Has been merged and accepted Then that team needs to give you the key That's how I think it'll work I'm not hundred percent sure this gonna be cemented Always got it changed But you do realize that trust and collaboration goes hand in hand So they need to give you the key if it's not a JCB package that actually requires a key Then it is a different story And yet the same sort of procedure will reply except the exchange of keys won't be necessary [00:41:27](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m27s) But now that you've got the key in place we basically click here And exported the JCB package So we now have this package Here in this folder And we now need to move it Into the repository Which is also Obviously the one we have now synchronised with our forked version So I have it here I'm gonna copy it actually gonna cut [00:41:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h41m54s) let's cut it From my temporal folder in my Joomla website To this repository paste it in And he is gonna ask if it should be Replace and we're gonna say yes Replace it And there we go we've got the package updated Now And we go back to command line And we do [00:42:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m17s) Git diff We'll see that That file is changed Now we also need to run this sh This hash file To update the And Now git Status [00:42:36](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h42m36s) we'll see if those files have updated So You'd possibly I'm not sure what VL Convention but I think Your pull request to the Joomla Repository of this component The ID of that could possibly be useful here It's just to sort of give a heads up and validate that you did First Contribute the code To the actual Joomla component and it was accepted [00:43:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m08s) And now this is the change to the package Which also now needs to be looked at So our case This is the pull request URL I think we just gonna use that in our commit message And Use the same commit message So it should looks something like this Update the component with the improvements made in JCB and maybe say ref [00:43:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h43m45s) And then The repositories username or organisation name The repository name With this Hash one Since the The pull request was number one Ok that would Do and then Will submit that [00:44:08](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m08s) And Now we push those changes to our Version of the repository Going back to GitHub then after the push has been submitted and we've look at this commit You see it actually has a link And this link is to that issue on GitHub To be easy for us to trace where you have contributed it to the actual Joomla component And why it's all happened being the same comment message [00:44:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h44m45s) Now this stage you again would make a pull request To the master branch Where we will basically review The changes Now again at this stage We don't have pull request templates and everything in place But as soon as they do get to be placed there then please follow those instructions Will try to be as thorough as we can But obviously being a community is always up for discussion and we will Try and [00:45:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m17s) Do this The right way At the moment we can put the ref in the description and then just again the comment in the Title if it's a long comment then just put Maybe a summary here short one and put the wrong comment back in here Ok and then you basically created the pull request At this point discussion will begin Validating to see that you followed all the procedures And that this package is stable and ready to become part of the Actual [00:45:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h45m49s) Repo And then once accepted it will be merged into the master branch Become available to the rest of the community So that's At the moment Illustration of what I consider a collaborative workflow in JCB So we Where at Next Step [00:46:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m09s) And we had to move to JCB Where They have now accepted and merged The Changes you made To the Joomla component And now the owner has given you the original key Because they trust The changes you've made And [00:46:28](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m28s) you know forked the JCB package repository Make sure you have it in sync if it's an old fork Then update the key with the key from the owner Then export to JCB package Add it to the local repo with a commit message and the reference As illustrated Then push the changed to your forked repo and make a pull request So here Is the workflow This could [00:46:55](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h46m55s) Become nicely documented I suppose Someone can take that upon them to even Make some nice chart I maybe not the correct guy for the job And this might Expand and become maybe much more advanced or it could be made more simple But in a nutshell just [00:47:19](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m19s) Below an hour We're at 47 minutes sort of This is the explanation of the collaborative Workflow with external Partners Around a JCB package Once this pull request gets merge we are basically back At the that this is in sync [00:47:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h47m42s) And This is in sync And this will continue and I'll go on and on And obviously others will contribute so There there are some other complexities also In this process But that is sort of what I can see happening I know that when you Pull the changes from the previous package you know this Where is it [00:48:09](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m09s) You know the import the JCB package There is the option to import it as a clone Or to import it with a merge Now the idea would be that you will only import and merge your JCB package With the global Repo As they accept This pull request And so that You would always stay in sync with what actually is currently the community version Of the package [00:48:37](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h48m37s) And you could import it it as a clone and make changes to the Clone and effect that will not effect the Main Master Version But this all is a trial and error process which You would Sort of show, teach yourself how that works And so my idea is to do that within a blank install try it out Pull in some of the free version play around with it Until you become confident [00:49:06](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m06s) And then you are able to also start contributing To not only the community packages But also VDM packages to which you've got access And so help improve those components For everyone Well thanks for watching I hope this is insightful And I'm sure there might be things that some of you would not able to follow And I would encourage you to just Google that and do some tutorials and [00:49:33](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h49m33s) Then I'm sure your will Manage. Ok thanks for watching. \ No newline at end of file