|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#31
|
||||||
|
||||||
|
Re: Organizing your programming
Quote:
Also because of our development methodology there is somewhat less interaction between the coding being done by individual programmers than for some other teams. In general, no 2 students are working on the same source files. Each programmer works on a class that is related to their own robot mechanism. The exceptions to this are related to button assignments (and their implementation in the main code loop) and the autonomous mode coding which are generally handled by the lead programmer. Although the autonomous code generally resides in the main robot class it is isolated in separate function which is simple to merge with other changes if needed. Quote:
Quote:
![]() Quote:
Quote:
I don't care for the paradigm used by Git and some other recently developed source code control systems. Like I said, maybe I'm a bit old fashioned. I prefer the straight forward use of check-in and check-out (or commit and update if you will) rather than commit/update/push/pull. I just find it unnecessarily complicated and redundant. Of course, I'm not a big fan of the cloud either... I don't trust it yet. Quote:
|
|
#32
|
||||
|
||||
|
Re: Organizing your programming
Quote:
https://cloud.google.com/actual-cloud/ |
|
#33
|
|||
|
|||
|
Re: Organizing your programming
Quote:
Yes, the bottom line is that students need to get used to the idea that they don't work in isolation - that there is version control, team collaboration, and the concept of risk management (don't deploy new code until it has been tested!) (One of my proudest moments this year was actually when our most "enthusiastic" programming student said "I think we should just leave it for now. It works, and the drive team is doing well with what we've got. We can fix [the remaining issues] in between now and our next competition." YES!) Git is a good system but it is not the only system and it is not the best system. There is some thinly-veiled "git is best" attitude in this thread. Prior to git, I've used ClearCase/ClearQuest, a stupidly obtuse one called Continuus, and CVS. I do like gitflow and I'm getting used to Github, but I'm told that coming from a ClearCase mindset is actually making it harder for me to wrap my head around git concepts. So I totally understand if students are confused. The YouTube link posted earlier is a great presentation. Last edited by GreyingJay : 05-10-2016 at 10:52 AM. |
|
#34
|
||||
|
||||
|
Re: Organizing your programming
Quote:
Quote:
Quote:
Never too old to learn new tricks... but old enough to be skeptical that new tricks are always better than the old ones. ![]() Thanks! |
|
#35
|
||||
|
||||
|
Re: Organizing your programming
Well, as others have said, version control is your answer. Although the team didn't like git as a tool this year, git will solve the problem you have proposed. In fact, saving copies of your code at crucial points, as you have suggested, is pretty much what git is doing under the hood.
Using the tool properly requires team discipline to follow a workflow. When everyone does their own thing, it's pretty much guaranteed to fall apart. Here is one workflow suggestion that has worked well for us: One student or mentor is the lead ("architect"). Other students are developers. The lead creates the initial project in the repo. This should be on a special branch (call it "master", maybe). By process, you must guarantee that the latest work on master represents the latest version of working software for the robot. After this, developers are assigned specific tasks to work on. Each task should be done by creating a brand new branch at the latest commit on master. ALL of the work for the task should ONLY be done on that task's branch, nowhere else. If another task is started, start a new branch. In this way, once a task is completed, there is a 1-to-1 relationship between "this task was completed on this branch". Once a task is completed, the developer should review the changes made with the architect, and possibly other developers. Look for bugs. Try the software out on a robot, if possible. Once the architect and developer are satisfied the code is as correct as it can be, the architect should merge the latest on that development branch back to master. If multiple tasks are being merged, the developers and the architect may have to work together to resolve merge conflicts (where two developers made different changes to the same line of code). Note by carefully ordering tasks and merges, you can avoid most merge conflicts. Finally, after content has been merged to master and tested on a robot, you may put down a tag to establish a milestone in software production. Use some simple numbering system (ex: v1, v3, v46, etc.) to indicate the progression through time. These are helpful in understanding which points in time functionality was added/removed and tested. The most important part here is properly using branches. Minimize changes made directly on master - none if possible. All tasks should be done on their own branch. No re-using branches for multiple tasks. No putting tags wherever you want - tags indicate a set of proven functionality. Not to say you couldn't ever deviate from this workflow, but having the standard up front is crucial to the success of a version control system |
|
#36
|
||||
|
||||
|
Re: Organizing your programming
Not going to get into the version control system argument here, other than to use Git.
Now, a couple of other things - GitKraken is my GUI client of choice when I use a GUI client, but the git command line program is fantastic and actually extremely easy to use. Eclipse also has built in support for Git through E-Git, though it's not great it's helpful if you already have eclipse and don't want to install anything extra. Another hosting alternative is GitLab, which besides providing servers also provides a community edition, which lets you install GitLab and self-host it on any machine/VPS. We used it last year and it was incredibly powerful. |
|
#37
|
|||
|
|||
|
Re: Organizing your programming
For anyone starting out in version control, Git is the predominant option in industry today which is easily shown through this Google Trends search. There is no need to get into a VCS war when clear data is available.
For those new to Git, try the following tutorials: I generally use the command line, but when I need an IDE I use SourceTree: it's fully-featured, stable, and free. |
|
#38
|
||||
|
||||
|
Re: Organizing your programming
Quote:
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|