3.3 Using Subversion for Source Code Control

Video in TIB AV-Portal: 3.3 Using Subversion for Source Code Control

Formal Metadata

3.3 Using Subversion for Source Code Control
Title of Series
Part Number
Number of Parts
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
00:09 Using Subversion for Source Code Control 00:24 What is Subversion? 02:07 Why bother with Subversion? 06:01 Top 5 reasons why you should use Subversion 09:11 Getting Started 10:44 Getting Started... the nanoHUB way 11:23 Check out your code 13:23 Commit your changes 15:02 What about Windows? 15:47 What about Windows? 16:08 Moving and removing files 18:50 Editing and updating 20:45 Looking for differences and reverting 22:36 Merging changes 23:54 Merging changes 24:28 Resolving merge conflicts 25:18 Resolving merge conflicts 26:37 Resolving merge conflicts 27:33 Resolving merge conflicts 27:36 Resolving merge conflicts 29:12 Retrieving an old version 30:26 Binary files 32:12 Branching and Tagging 37:31 More Information 37:52 Assignment #12: Add to the "bootcamp" project
Laptop Trail Server (computing) Open source Software developer Code Multiplication sign Source code Home page Virtual machine Client (computing) Plastikkarte Computer Computer programming Product (business) Revision control Data model Mathematics Different (Kate Ryan album) Software repository Endliche Modelltheorie Computing platform Control system Physical system Source code Simulation Open source Data storage device Code Control flow Process (computing) Repository (publishing) Personal digital assistant Whiteboard
Point (geometry) Laptop Computer file Code Multiplication sign Virtual machine Parameter (computer programming) Torsion (mechanics) Special unitary group Computer programming Emulation 2 (number) Software bug Number Revision control Medical imaging Mathematics Coefficient of determination Repository (publishing) Software testing Endliche Modelltheorie Information security Metropolitan area network Email Linear regression Building Digitizing Cellular automaton Fitness function Mathematical analysis Code Bit Multilateration Line (geometry) Process (computing) Doubling the cube Repository (publishing) Personal digital assistant Charge carrier Hard disk drive MiniDisc Software testing Special linear group Right angle Figurate number
Axiom of choice State transition system Computer file Source code Virtual machine Branch (computer science) Content (media) Plastikkarte Revision control Root Bridging (networking) Repository (publishing) Data structure Summierbarkeit Physical system Form (programming) Data type Computer file Projective plane Directory service Term (mathematics) Euler angles Virtual machine Type theory Process (computing) Software repository Repository (publishing) Middleware
Trail Computer file Code State of matter Virtual machine 1 (number) Spiral Mereology Special unitary group Revision control Mathematics Estimator Analogy File system Data structure Projective plane Code Maxima and minima Directory service Compiler Skeleton (computer programming) Type theory Word Repository (publishing) Middleware
Revision control Mathematics Root Computer configuration Right angle Line (geometry) Menu (computing) Window
Structural load Computer file Code Directory service Line (geometry) Control flow Equivalence relation Revision control Internetworking Computer configuration Network topology Green's function Cuboid Window
Trail Computer file File format Computer file Projective plane Directory service Special unitary group Revision control Type theory Mathematics Message passing Energy level Reading (process) Window
Web page Commutative property Trail Computer file Link (knot theory) Code Information overload Multiplication sign Source code Spiral 1 (number) Virtual machine Differenz <Mathematik> Mereology Special unitary group Computer programming Mach's principle Revision control Mathematics Differenz <Mathematik> Different (Kate Ryan album) Computer virus Cellular automaton Computer file Code Coma Berenices Staff (military) Directory service Line (geometry) Message passing Pointer (computer programming) Process (computing) Repository (publishing) Universe (mathematics) Website Right angle Reverse engineering
Point (geometry) Computer file Image resolution Multiplication sign Code Coma Berenices Line (geometry) Counting Plastikkarte Torsion (mechanics) Special unitary group Revision control Mathematics Data mining Mathematics Process (computing) Internetworking Conditional-access module Summierbarkeit Reverse engineering
Distribution (mathematics) Code Equaliser (mathematics) Multiplication sign Plotter Demo (music) Source code Combinational logic 1 (number) Shape (magazine) Mereology Special unitary group Virtual memory Software bug Mathematics Different (Kate Ryan album) Analogy Videoconferencing Flag Diagram Data conversion Area Source code Touchscreen Computer file Interior (topology) Peg solitaire Control flow Data mining Category of being Repository (publishing) Computer science Text editor Right angle Quicksort Row (database) Ocean current Point (geometry) Trail Computer file Translation (relic) Branch (computer science) Streaming media Plastikkarte Binary file Graph coloring Revision control Goodness of fit Network topology Computer-assisted translation Theory of everything Default (computer science) Default (computer science) Execution unit Demo (music) Image resolution Projective plane Code Plastikkarte Line (geometry) Directory service Binary file Grand Unified Theory Personal digital assistant Network topology Revision control Diagram Family
Rule of inference Source code Code Software developer Electronic program guide Electronic mailing list Code Directory service Web 2.0 Wiki Revision control Goodness of fit Process (computing) Different (Kate Ryan album) Right angle Information Website Window
Wiki Revision control Type theory Code Projective plane Source code Right angle Model-driven engineering Directory service Summierbarkeit Special unitary group Number
Metropolitan area network Email Execution unit MUD Projective plane MIDI Maxima and minima Code Limit (category theory) Plastikkarte Hidden Markov model Special unitary group Emulation Value-added network Intermediate value theorem Pointer (computer programming) Mathematics Word Uniform resource name Cubic graph Hill differential equation 5 (number) Booting Programmschleife
Point (geometry) Computer file Code Building Multiplication sign Projective plane Source code Counting Limit (category theory) Student's t-test Line (geometry) Directory service System call Emulation Revision control Pointer (computer programming) Mathematics Personal digital assistant Video game Energy level Lipschitz-Stetigkeit Summierbarkeit Booting Reading (process)
all I I I Online simulation and more work for technology board war in the
process of publishing our tool I mentioned once or twice that he didn't know workspace and use version the check out your code idle the guys and use diversionary source code control system yet but let me explain to you how that works right so 1st of all what is this subversion thank subversion it is like a program called CDs but it works a lot better on CBS is the concurrent versioning system in Linux but if you're gonna older you might have heard of it before even used it and I put the reference there cause a lot of people that are like 0 CDs I know that I it was created by some people like lab that a long time ago a decade ago but their production for a while so it's pretty stable as an open source license you free use it and a lot of people use it on Linux especially although it also works on wind 32 and a bunch of other platforms and and basically it's a way of managing the source code that you create for your tool so what you can do is take all the source code for your tool and uploaded into subversion into what's version calls a repository where stores your code and then you can check out or download your code anywhere else that you want to work on it so it works with the client server model in our case the servers nail and then let's say this is here in machine here in the lab and maybe this is your laptop which use at home so you can check out your code under any computer work on it and send the changes back you can go a completely different computer and pull down the latest version of the code work on it and checking your changes so that's what it's for it's for keeping track of your source code the so here we are with some code were uploaded into the repository and then I can download and check it out a completely different client like at home or something like that so I think of it as a way of storing your source code which now you may say
out of school and everything but only that I'm a lot people tell me why I knew that I and they used to be that we would tell people well OK but I think you make a mistake now we just say no you reduce version whether you like it or not but I'm I'm tired of these problems of so imagine this Imagen you have a version of a program it's all working version x 1 of your program you spent a lot of time you want a little bit more you got X version next to you fixed a few bugs you added a feature and you took it over to a machine and you installed it on some machine and I like nowadays the need of a machine called Hamlet analysis coats and Rossman all these machines pretty right so any digit code under that machine and kind of get built and compiled and as you doing that that's actually problems might you Make file is wrong something there's a bug in the colder you forgot to declare something double so yeah you fix that over there on that machine to make it work on that machine and then you take that code you put to another machine like at the National Center for Supercomputing Applications right you copy latest version there and in the process there's probably a problem there too so OK or fix the file a little bit more and now works on everything supposedly the now in the meantime the been working on some other stuff and you copied the working version of the code to test you kind of forgot about all the changes you made on Hamlet and and CSA but you copied your latest code from your home machine to test and made some more changes and you said that code to e-mail my e-mail to someone like as they said Hasan copier cult juggle OK carriers and then they start making changes and then they want send to the changes back right and at this point now there's like 5 versions of the code floating around and there's a problem because in the latest version when I take this very latest code and I compare it to my version x 2 it's almost right this is still yield off right like instead of 3 . 1 2 5 and now getting 3 . 1 2 4 9 8 that's probably good enough and then it's probably just rounding isn't i triple your something of an and instead of 9 . 98 79 . 9 9 0 1 so that's like only 2 significant figures now and the 3rd significant digit has started dicey was probably OK right because I really want be done in graduate right so like my new member with scientific code there's a good chance that you just goofed up something small and then this should not be different at all probably should not be different all you should always be getting like 6 significant figures come much like the machines nowadays compute of a dozen 16 significant digits right so out of 16 significant fit digits I think you can get at least 3 right so if reviews and stuff like this is pretty scary that probably means the code is poorly written or there's a about somewhere in in the cell the uh the other thing that's interesting is that when you run this code the original version took on 20 seconds the new version takes 340 seconds whom is optimized to optimize the code or did you forget to to call a circular dating right maybe somehow you not calling a routine to generate the right model values and that's why runs lot faster now but it's also a whole lot less accurate let's say all course I don't know which is right so stuff like this happens images drives you crazy you have no idea which version of the code you should trust is this the version of that the version which version is correct and really the only way you can know for sure is by going back and running your after regression gesture or by checking values against the literature or by having someone else run the code may be double check everything for you so there's there's a lot of work there that needs to be done each time now if
I haven't scared you already and using subversion opened it but when another reason number 1 if you're already using CDs you should use a version instead because it's better you might be using did in which case it might be the best of all nowadays if using did I won't give you any argument on Linux but subversion is a lot better than CBS because he he's a secure transport in the whole bunch of other things but that so when you connect with versions in in all of the user's http asked send your code over secure transport and sends it in your repository so it's stored somewhere else off your machine backed up the now that's really good because like remember the story a minute ago you like where is latest version of the code I know I fix the file at some point like where did I put that fixed you never have to guess was version because you're candidate all your changes in your commits will always be in the repository will either be the latest code or they'll be in history somewhere so if you like only I remember I added that then I deleted it and I wish I had that code again you can go back into the repository and pull out an old version you can see everything that's in the version does versioning of all your code is the other thing about subversion is at a laser who broke the built model you guys run into this when you get into a team with like 3 people you'll work like a dog over the weekend getting everything right you come in Monday morning ready to show it your advisor you show you show up in broken all of a sudden it's broken who broke I was working this morning I had working right and then you look in the history on subversion and it shows you that after I checked in version 6 this guy clock spam and check the 2 more versions there but at least you can tell your advisor pay was me that was me was the user's guide eject inlays version brokered right so there's a history there you can see like who did what and who was that some of my code so on so there's the detail now I can go and kick Steve clock in the pants and say what you do the last reason is and this is happening more than once managing your hard drive just died so you got right to the last 2nd you just fixing the copyright lines and all of a sudden you hear that clicking sound coming from the disk itself like kind of a Geiger counter you know and and you know when you're a clicking sound that the disk is like toast at that point you start thinking maybe I can keep a running just long enough to pull off 1 less copy not not if it's clicking is probably gonna but fortunately you put your stuff and subversion and you've been committing all your changes so if you're disk dies no big deal you just pull out your laptop and you check everything out on your laptop and you go from there where you walk in you know you go to the lab that that produce and check out your code and go from there so if your code is in the version that's always safe you can always pull it down to whatever machine you want and I can continue on from there like that I'm back in business now 2 minutes later secular purpose I worry about that later use that new laptop instead you're all set to go to far so let me tell you a little bit
about subversion now maybe you're interested in using it if you were going to set up on your own Linux machine this afternoon maybe you guys use Linux at home or whatever if you wanted to use a version this is what you would do if you're starting to scratch and you can make a directory of colored initial or whatever and inside that you make 3 directories by convention on you don't have to but but typically when people using subversion they do this to make 3 directories called trunk and branches and tags you find out why later trunk is the 1 for us that's important because that's where that's the root of all of your changes and and you might take all of your source code files all your start out Caesar here tool that XML or whatever and movement that trunk directory like that so now i've got all these directories got trunk branches and tags and i've got all my files moved into the trunk already to right now you can take these commands to create a repository and if you're on your own Linux system this is where you have to type you have to type at the end and then create love some repository and then at the end import initial love love into that repository so that would take this this directory structure that I just created and put it into a subversion repository and you store that repository where everyone user localized and repo might be a good choice but whatever you choose so under ordinary Linux systems that's what you would do that were not on an
ordinary Linux system we've already got were all set to go simplifies a few of those steps and does all that stuff for you so when we go through the contribution processing we fill out the form and we create a project like I showed you a minute ago nearly all of his good automatically create a subversion repository for you it will automatically create the trunk the bridges in the tags and it will automatically put a bunch of stuff in the trunk it'll create rapture directory for you will create a middleware directory for it'll do all this stuff like getting mutual all ready to go so that much you have to worry about all you have
to do once you created a project and but all you have to do is check out your code check out the initial code and edges stuff to it so you do something like this in your workspace or in your whole machine or whatever wherever you are you type a command svn checkout and you get a path like this http http estimate reduces secure transport so HTTP S colon slash slash nanohub dot org slash Tools slash and words as your tool use your tool that if you made a tool called spiral use a spiral there few make a tool called q . is a acute . there so whatever your tool name is you put that in there and then SVN for subversion and trunk because that's where all the good stuff is and then you make under the same directory name usually the same as your tool of whatever you're told them as spiro or you got so if you do that what that does is it takes the code for male and downloads it to your local machine and check it out so you can work on it so it takes that skeleton empty directory structure that analog creates for your project and brings it down your machine you can see it gives you rapture directory doctorate resource directory middleware examples all that stuff and it tells you your version 1 OK now you want some files because you got some stuff now that you add so you can make the 3rd example slash he X 1 for example and you can edit a file called read and add some stuff in there so now I've got a directory of files and I can tell subversion to keep track of that to use that so I say as ad example slash E X 1 and what that will do is add that directory and everything in it to my repository so from now on that part of the repository is not just a weird phylum of file system of junk file it's like part of my tool so I do as ad now and it's a good idea to go way back up to the top to the very top of your tool and then you can look at the status if you do status it'll show you every all the changes that you've made better pending they're quite solid yet but Republic of his proposed changes right so I got examples the 1 examples 1 read me if a next to it a means add and then there's a question mark next a that out of the question mark next to a out says that it doesn't know what that file is a out out is probably will you get from the compiler it's like some garbage file I don't want add that I just wanna add examples EX 1 in examples X 1 really those are the ones the 1 at right so so that that looks correct to me some things you want some things you don't know if I wanna make the change permanent I can type
SVN commit when I say SVN commit it says OK underhand X 1 and X 1 read me I can ill usually pop up like the IRI max or whatever and I can type in some commands that created the X 1 directory the readme file in medicine I say that will will commit the change and from now on that's a permanent part of my tool so what I want done with as the and you'll see saying adding adding and mental states committed revision to so I have 2 versions of my tool but if you look
you'll actually see it there too and if you look at the change history you'll see the original version created by root and then you'll see revision to created by me on such and such a date and all of that was checked by now you
guys might say what I use Linux use windows and all that I like Windows last line because there is a version of our SVM called toward assess the and that you can use on windows and when you add this package to Windows installation you'll get a right when you click you can right click on any folder and say svn checkout it'll add that option under the menu right menu and
and so and you can check out your code you'll get a directory with a green check mark on it that lets you know it's being controlled by subversion and you can right click on that and you can do things like SVN update and as the Internet and all that kind stuff so there's an equivalent Windows way of doing all this stuff if you prefer Windows when you about
committing and it'll give you dialog boxes instead of typing line options it'll prompt you with the dialog boxes for all this stuff and then I'll show you basically the same stuff it'll show you all this stuff and then at revision to and so on so it's all the same as the Windows version of the tree right now that's
adding so you can add stuff in what about moving and removing and changing things around suppose I get here in the my examples the X 1 and people were complaining because I made that file called reading and Windows users don't like it because it doesn't know what file type it is I wanted change to read me . text normally you just say M move read out text with subversion you have to tell subversion about those changes so we say SVN move read me to read . text that way subversion knows you trying to rename the file and what it will do is basically Avenue read . text and delete the old readme file in the version history so you can see it kind of echoing those commands back if I may go up a couple levels in my project and they say I don't need that doctor rectory so I can say at the end delete doctor and it will delete again I don't just remove the folder myself I should tell as the ends of the lead the directory and it will delete the directory and then keep track of the fact that it needs to be deleted by now if I say SVM status I can see with spending these are the pending changes I see doctor will be deleted when I commit and then and reading text it's going to delete the old reading so those are the changes that are coming up now 1 make those permitted I
can say the uncommitted and it'll probably again I'll show me what changes I'm about to make it a prompt me and I can type in my message move some files around and then again now in
that revision 3 and you'll see on the changelog revision 3 MMC gruesome files are so you can always keep track of who's who making changes but it's really a good idea to put those comments there because when people commit stuff without comments is like what they do I have no idea to look at all the diffs now to figure out what they changed I rather know conceptually what the changing you know I change this part a change that part I added a note to my spiral of whatever that we can know you can tell which version has what by now all these gobbledy-gook over here the DDA a in the plus and this and that but there is actually a link in the notes here that'll take you to the documentation their bunches simple ones like the ones I show you and then they're more complicated ones so that you can find out that you only need once in a blue moon and so I just kind of put in just a pointer in the notes here if you're curious you can follow the link here where it says this page and a pop up the the dock by now
suppose you guys are all trained in using subversion you've committed some changes to the repository very good and suppose I do a check out now and I check out the code to 1 machine and do check out now and I check out the code to another machine so I've got the code in a few different places now that's good I suppose I make a change to the Makefile over here and editing the file and then make a small change for this machine instead of GCC dash G I want optimized GCC dash 0 that optimize the code and then I'll commit that change back to the repository right so I made a change now what I'm working on the other machine and wanna get those changes so over here I can say SVN update it it will bring down the latest version of that code so always bring the latest that bring you up to date on whatever machine on the SVN update will step down the latest changes so my message to you is don't copy cold around remember the beginning where I said well you take that code copy of this machine you change it copy of this machine changes don't do that always which a codon subversion always check out and commit because then wherever you want the code you just do an and check out or update and always update the latest version is a lot safer lot cleaner than copying code around because you get really confused if you're copying code around you don't know which version of what and where had that fix or not and it's all messed so don't copy code around instead you move codes with SVM check out and you do things like as he and commit an SVN update to move the changes are trust me it's worth than it really is what you're looking at me like this so skeptical trust me you're gonna love it once you get used to it by so suppose I I have modified a file and if I do as status and looking at my file and it's a source hollowed-out C and my gosh sometimes I kill remember things for about a week at a time you know let's say let's say there was a bar mitzvah last week I just can't remember anything like before that in history of light to neighboring cells gone or something so you can do as and death and it will show you what you were working on maybe it was a week ago maybe was 6 months ago and thinking when I was changing as the and this shows me that there's a diff year pending that haven't committed yet this is a change that made locally but I haven't yet committed and I can remember all yeah i remember i i was changing the Hello World program I got rid of the world with a fine of the line says hello world is a minus next to it and I added 2 lines that say say hello to everyone and Hello universe so now that's what the difference is the sitting on my local machine and I can ask myself to i want commit that changes my ready to go with that is a good or not if I don't like to change if I think that was a smoke in there was like crazy I should never have done that you can always do SVM river and it will it will move that file back version back to what it should be from repository so if you say SVM revert it'll take changes they've made locally be having committed yet and it will get rid of them and it's almost like a reverse updates taking you back to the last safe version of the code by you can also revert changes with directories and stuff too by the way if you deleted directory these site Lewisham new that you can actually revert as long as you haven't committed that change trash by now 1 last interesting thing suppose I'm over here on a machine and adding the file on the make file and then add a clean target and then an hour and staff start at 0 1 8 out out so I have edited the Makefile and over here on this machine I've added the Makefile maybe my teammate maybe someone else someone else working on the team checked out the code and they added the Makefile although they added C equals GCC and dollars C dash overload out sea right so we've both been working on the same Makefile whoever checks in 1st has got the easy job so you always want check in early although not so really that you break the build because then someone like me comes after you've spanked Suanzes wide you break the mold but when you're happy with your changes check them because the sooner you check in the fewer problems you have sold over on this side of the wood ASEAN committee and my makefile changes get committed to the repository over on the other side the other person when they go to commit they will be able to it'll tell em you're not up to date there's something wrong so on the other side before you can commit you have to do an update in the process of doing an update it'll bring those changes down and it'll show me OK I have my changes C C equals GCC in dollars CC but it'll adding and clean the clean target that's good right because I made the change over there gets pulled over here I did the merge everything's good so now that I've updated my code that I'm OK then I can do as
the Internet and now the
Makefile looks like this with all over changes and so it really helps you work together as a team in a great changes and get them all committed by now there can be problems suppose that I'm working on the Makefile over here and not only did I have a clean target but I added dash 0 hello and at the same time over here my teammate added C equals GCC and the dollar's CC there so were both working the Makefile the same time at this point we actually made up with both made change these this into these lines here we both change them so again I repeat whoever checks 1st has no problem check in early check-in often not so often you break the bill but often so if you do as commit that file goes up no problem the next guy when he tries to do his commit he will be able to do and you'll have to do and update and when he does ESPN update it'll suck the changes down and it will tell you why we take this when I see the sea but usually tells you all this stuff is updated and which shows you a scene like that it means there's a conflict in that file so it means you have to figure so now it doesn't just merged neatly together there's a problem if you try as the and will tell you it failed will let you do it and it'll remind you that there is a problem there is a conflict you gotta fix it will let you change it right and if you look at the and status will tell you by the way I've got some junkie stuff sitting around and then about this Makefile look at the junkie stuff the Makefile is in conflict and subversion actually means around some different versions illegally around reversion 5 revision 6 and something called Make file that mind so make found that mine is my version of the file before I started all this mess and Makefile right now is that the best guess of everything merged together so version takes its best guess and tries to fit all together and then the revision by the reverse revision 6 I can look at those about questions about older versions so now it's my job i have to figure out which 1 of these is right or what how to fix it so the file is the best guess that's usually a good starting point to start there so if I look in that file here's what I see
it look like this subversion puts it less than less unless less they not mine and then shows you the line from your file and in the equal equal equal equal and then the rest of the stuff from the other file and then the greater than greater greater than are 6 so it was showing me when you see that less and less than equal equal greater greater greater that's an area where i have to figure out which is right so I look is at the top part that's right or is it the bottom part this right here is some combination in this case it's some combination of the 2 right because the top part mine isn't quite right the other guy added that show the work but at the same time my their part isn't quite right because I added the dollar C so we actually have to mix up we have to make both of those changes you know I need to get I need to get the CC here but I also need the data show a low so this line I have to fix to have both of those parts so what I can do that is put it all together in my editor nothing fancy just in the editor you delete the less and less then you delete the equals the the greater greater than you build everything all back together the way it really should be so I I put everything together under 1 line with the dollar CC and national hello and put together and that's the way I want and so I say that file out and then I tell SVM that it's OK in school that say SVM resolved Make file and as the and those OK I'm blessing that that make files in good shape that don't do that unless you get rid of all those equal equal equal in less than less than or else you broke the built right next time somebody tries to make makes to lose its mind because of all that less than less than less than or equal equal equal blur and you'll be like God who did that why don't you fix the conflict so go and fix everything up and then say ST and resolved by and then once you've cleaned up all the conflicts you can say SVN commit and go ahead and commit now I've got everything all put back together right that's the hardest part of using SVM when 2 people edit the same file at the same time and change the same line then all of a sudden it's like yourself but each other's toes don't work out usually that doesn't happen because usually will work on a project all work 1 value work on another file or all work of 1 file work on the same file but we do the top and the bottom row whatever usually the changes don't conflict but when you actually both change the same lines versions like commodity kidney how we fix it so it's up to you to fix it by the few other
things the came handy to know if you want get an old version of the tool is a flag there dash are free you can give a revision number so if I say dash our 3 it'll checkout revision 3 of my code sometimes you say why no backing revision 12 I had that cool thing but I deleted it so you can check out that revision and go back to the old version you could also say I wonder what the old Make file look like you can say as cat that 5 Make file and you'll find that make find revision 5 and print it out to the screen so that's a quick way not checking out the whole revision but just getting 1 file getting old version you can say that too by the way onto a new file and and or in this case against guess overwrite your current file you could also say log n the analogue will tell you like the revision history so if I say as the analog file it'll tell me all the different revisions of that file what's changed you also say as the analogue not for Make file but just in general it'll tell you all the revisions about a particular repository of current directory just try now subversion as some pretty good defaults usually does the right thing if I take a j peg copy it into my examples directory and if I say the and you notice it says add and it has been recognizes that that's a binary file and so subversion usually is pretty good about recognizing binary files and that's good because it treats them differently binary files don't get merged the same way as ASCII files right and so the been there doesn't it doesn't do any funny translation carriage returns and line feeds and doesn't try to merge versions so it's good to for subversion to know about binary files when you committed you'll see it's a binary file again having been J. examples slashed diagram that J peg if for some reason you a file called demo . that you know it's a binary file and you add in if for some reason subversion doesn't get like here just as added didn't say anything about being binary file this you can fix it and this is all these gobbledy-gook that you can say if you dig down into the subversion documentation you can set a property of union props set and states octets stream on this file and you can change the line style and all that stuff so if you need to you can set these properties with usually subversion does the right thing I just mentioning that because it is possible not likely but possible to me to put a binary file into a repository and then have a get corrupted because if if subversion thinks that it's an ASCII file it can automatically convert carriage returns and line feeds and emerges and weird stuff so with that with something like a j panderer M P 4 video that that wreaks havoc on the whole thing I mentioned with the beginning about branches and tags and I'll just mention quickly about that here but you can think of the whole source code repository is a tree and so far we've been dealing with the trunk the trunk of the tree trunk is sort of the main line of where all the code is and as time goes on you get more and more revisions on the trunk now at some point you may say 1 thing to do something so crazy with my code by 1 mess up the rest of my team I wanna create a separate version of that kind of a different the color branch if you think of it as copying your code to a different directory you can work on it separately where you don't mess anybody up and then later on maybe you merge it back into the main line after you've worked all out so they call that a branch and you can create a branch in on in subversion by doing something like this and you can do it check out and you notice in this case when I when I did the checkout it a as the and trunk I just said as and that'll check out the whole SBN directory including the trunk and the branches in the tags and everything that we originally set up so I can check that out into a directory and I can go in there and then I can say I'll see the trunk in the branches and the tags and all that I can say SVN copy that from directory to a new branch branches McLennan and that will act as though I created a complete brain a copy of everything is if I picked up the whole directory and copied it now it's more efficient than that you might say well my gosh I've got 10 megabytes the stuff and I want to copy 10 megabytes stuff version really smart about that all the files that haven't changed it won't copy but the ones that change it keeps track of all the differences so the other smart thing about subversion such as copying code it actually keeps track of all the differences very efficient by and then want I copied my trunk to a new branch McLennan then I can commit that and go ahead and create that private branch and then I can check it out and again instead of saying the trunk I can say SVM branches McLennan and it'll take that directory and check it out into a different whatever directory name a given here instead of I don't wanna confuse myself so instead of just saying Your tool I said your to all appearances your tool MCL here just to remind myself as a branch and so so that's basically how you do it 1 telling you it's it's really weird with version when you create branches and tags and things and subversion you just copy them as directories they you just do with subversion into SVN copy of 1 directory to another and in this case there's nothing special we just started everything by saying we have a directory called trunk and branches and tags and I can copy from 1 to the other but it's all in doing is copying directories basically and I can work on this whole copy of my tool although myself and I won't mess anybody up and I can change everything and plot the guts of everything you know put back later when it's all settled down now similarly I can copy the trunk to something called tags release 1 . 0 tags is of typically have a practicing computer science for engineering where you you're just about to release you truly want tagging in a family of arrests you taking poll of version 1 . 0 again you like 0 my gosh what version 1 . 0 I don't know somewhere back in July a something right and if you do this in USA and copy the trunk to tags release 1 . 0 from now on you'll have a copy of that just as it was in version 1 . 0 and that's really good too by the way can you can go on and make changes in change a tool and now maybe I'm at least 10 and then someone will say have found a bug in Release 1 . 0 and mild normally usage correct get the latest release right but if you wanted to fix 1 . 0 if you're a company let's say in the company actually of paying customers and the paying customers say I want 1 . 0 fixed you can go back to this tagged version and you can fix files in that release and then put out a new release of 1 . 0 1 . 0 . 1 whatever so it's a really great idea what you're about to release the tools to do a copy like this to tag it you can think of that as if you're applying a tag under the tree and from then on what I wanna see exactly what was in Release 1 . 0 I can just check out tags slash release 1 . 0 and get everything checked out on we have a comment in here when you do this branching stuff if you have many people team creating branches all that kind of thing and then later on you want take a branch merger back and it's it's a really big pain in the coming years said uses the case I would say nowadays don't use the Subversion if weird complicated merging and branching don't use as he enters get all used here there's anything nowadays that people use called get which is probably far superior to this a little more complicated if you already know get sick with it if you don't know get so versions a little easier might be easier for you to get started so we still have people using subversion in analog and it works well for small projects like all this ranging in the tagging is pretty simple but the branching stuff if start doing a lot of branches you're not like Subversion anymore alright
1 last thing I mentioned that there's a lot of good players out there there's O'Reilly books on subversion you can find the O'Reilly books on the web you can lighter documentation online and and all the stuff of you want to check out toward assessing and and all the different flavors for Windows and all that so you you can find all that stuff online and 1 last
thing I want you guys to try before we head out today and is using subversion career development teams out I still remember your team if not I guess you can look in the wiki find your name because you put your name in the wiki right and so what I want you to do is I want you to to get in workspace and I want you to check out the code for your development team and I want you to actually you can check out the whole code disposed on but when you check out the code for your development team go into the directory for your your development team and your name on the list and then committed again whatever checks in 1st has easy job because everybody after that has to deal with all the merge conflicts right so if we go back to our
bootcamp remember we're working in whereas it slashed Tools slash bouquet at 0 slash wiki and to do that so here's our wiki page right on many years lab assignment number 12 right on the wiki page instructions in the wiki so you can start up a workspace and use version to check out the source code says follow these instructions and there you go every project on nano has a little briefing on subversion so if you're ever wondering how I check out the code for this project there always instructions on the project and that they actually show you the SVN checkout command you see right here there's there's a command here that says svn checkout and tells you exactly what to type http SVM that our tools as the and trunk who can't that's what I want you to get into your workspace and check out the code that I want you to find your directory dentine 1 team to I want you to go in there and edit the stuff we're good back there by
you could alright so here's my
solution to the lab assignment I want you guys to get into the boot camp problem project and check out the code and make some changes so folks in my
workspace get in my workspace here and I'm going to do svn checkout http colon are actually s colon slash slash male about a word tools boot camp and if you're wondering day I wonder what what was that path again I can't remember on every project there's always instructions about how
to do the out subversion check out and in this particular project we link it right here we said check out the source code for this project and follow these instructions and this shows you the SVN Checkout path here so it's tools bootcamp as trunk and I wanna check out my old directories of tools but as the and trunk and I'm and check it out to my own call the C. 2012 then call whatever you want whatever directory name you want to call it at the end so that does the check out and it tells me that I'm a version 180 and if you want you just see this counter go up and up as you guys are committing things everybody's checking things in the revision count keeps going up and up and up so I'm going to boot camp 2012 into dev team 1 and take a look there's a readme and followed by name is there are terrific i'll remove it for posterity by and I fixed it if I do as the N status it shows me I've modified that if I go up a couple levels and look around all the files I can look at ASEAN status over the whole thing I can actually more than 1 at a time when linear the edit dev team of 3 to books the readme file I like this but I'm gonna get rid of all the blank lines in solution altogether so many others put a lot of time and putting the blank lines in the problematic thing but anyway so now if I do and status shows we have modified both of those files and I could always look at the deaths I can say that the endeavor their 15 1 read me and I'll show me all the changes i've made and if I want back out I can revert that file has the reverted dev team 1 read me and put it back the way it is now phi look at all the changes I and change the file anymore and if I look at dev team 1 read it's the old 1 with my name there so at some point checked everything out I got out of the way I wanted I do maybe 1 last update to make sure I'm up-to-date good now I do SVN commit and it'll prompt you show me all the things I've changed I'm allowed to commit and I can add my comment i which is removed extra blank lines and there you go now sometimes you get to that point and you find out of all had a conflict somebody else check something in the meantime while I was messing around and then you gotta go and resolve the conflict and so then you go you you do your update you update your code and has the and update you get the latest code you edit the file you get rid of all the conflicting files you tell us end you resolve the conflict in the new committee that's all there is to and you guys can work through some of that too so if you get in the habit of using this as the end it will really help me out we get the worst case today because all you guys were editing the same file in the same spot at the same time you're hitting times the conflicts which is why we do lab assignment which is good but and in real life you will hit conflicts that often because not everybody will be editing the same file on the same time but it's a really great way of helping emerging changes work together in small teams you may find yourself working with 2 or 3 other students this summer working on a tool you can check out the code you go work on it together in a committed and get published


  630 ms - page object


AV-Portal 3.20.1 (bea96f1033d39fbe77f82542458e108105398441)