Should I commit all my computer science homework assignments to GitHub? [closed] - github

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
After reading a community wiki on Quora, I decided it would be good to start experimenting with GitHub. I thought, "What a better way to experiment than with introductory computer science homework?" However this practice opens up my solutions to the web, and I am concerned that other students might plagiarize with it. I have read other questions on StackOverflow about version control and homework.
Thus, a few questions come to mind as I consider this practice:
Does putting homework code on GitHub open it up to be copied?
Are people that plagiarize familiar with GitHub?
Should I be concerned?
Would plagiarism detection software scan GitHub

Does putting homework code on GitHub open it up to be copied?
If you create a public repository, then yes. Private repositories cost money (7$/month for 5 private repositories) though, as pointed out by carols10cents there is a free student version https://github.com/edu
Are people that plagiarize familiar with GitHub?
Open source is all about sharing. That is kind of it's point. Don't store things you want to keep private in a public place.
Should I be concerned?
For general homework no. Again, don't put essays and personal writing in a public repository. That would be similar to putting your essays on a public blog.
Would plagiarism detection software scan GitHub
I don't know. Probably, eventually.
Git can be used without github. To really learn git, you do not need github or bitbucket or any other paid service. GitHub is just a public set of servers to store/share/backup your work on.
Git is great for tracking revisions. If you have ever used Google Docs (Google Drive) and looked at it's history feature, you are probably familiar with how nice it is to be able to revisit changes and old versions of your work. Git formalizes this by allowing you to comment on your commits, branch your work into multiple versions, or just experiment without worrying about overwriting the original work.
Update
I read the Quora post and thought I might add this.
The very best thing that you can do to improve your skills is rent a server of your own from a vendor like Rackspace, Digital Ocean, or Linode to name just a few of the providers. These services can run as little as $5/month though $10-$20 a month is more typical. From there you will have to learn how to configure a Linux machine. You can install a git repository, mail servers, web servers, whatever you want, in a very low risk environment. Make a mistake and you can just reset the server to its virgin state. I recommend installing an Ubuntu distro because of its large community and relative ease of installing new software.
One of the problems with developers is that they often are too dependent on sysadmins for tasks that really should be part of their repertoire.

Does putting homework code on GitHub open it up to be copied?
It depends. If the repository is public, anyone can see it, and fork it. They may even send you pull requests! If the repository is private, on the other hand, it can only be seen by people that you allow. You need a paid subscription to create private repos.
Are people that plagiarize familiar with GitHub?
That's off-topic. But IMO, you should always suppose plagiarizers are familiar with everything.
Should I be concerned?
It's just homework. Why do you care? It's not like that's your doctor thesis or your next patent material, is it?
Would plagiarism detection software scan GitHub
I know there's software that does that with Wikipedia. I wouldn't be surprised if someone made that for Github. But usually such software checks whether you've copied something from well known sites - if you are the author of the original content, you have nothing to worry about. If other people are plagiarizing you, it means you are good at what you're doing.
Last but not least: you might want to read about Creative Commons. Unless you really want to keep your work top secret, it's better to use a CC license than to lose a night's sleep over people copying your work.

Yes, unless you use a private account.
How could we know?
By publicizing your work, you're not doing anything wrong. Those who would cheat by copying your work and pretend the work is theirs would be the bad guys. Now if your teacher receives twi identical homeworks, you'll have to prove your innocence, which might not be so easy.
I guess so.
My advices
experiment by opening a private account, that onlyyou can have access to, or
experiment with git (which is what matters, more than github) by installing your own git server on one of your own machines.

Related

Game development with multiple people in Unity3D: How could we work on the same project simultaneously? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
First of all, we're all beginners, so I am really sorry if this is a trivial question.
We're developing a game in Unity3D. We have two programmers, and one artist. We'd like to make our life easier by not just simply communicating via Facebook and sending our stuff back and forth. I know about GitHub, but I have a couple of problems with it.
It's not free for closed source projects - which would be ideal. Is there an alternative? Is this even the right kind of site to use?
Stupid reason, but I just can't comprehend how it works/how to use it. Is there an easy tutorial for it or something?
Is it even 'compatible' with Unity3D? Since I don't really know how
GitHub works, this might also be a really stupid question.
First of all you can use Bitbucket to host your stuff. Its like github without the open source community.I'm using it on a similar project I'm working on with some guys. It's important you understand that git is version control software developed by Linus Torvalds (creator of the Linux kernel). Git can be used to "commit" changes to a project. Then your other coder could grab those code(script in unity?) files and load them into him project. It is kind of overwhelming to learn to use at first, but it gets easy once you get it. Really learning to use git is one of the best things you can do for yourself.
As far as using git goes, I use linux so I can just 'man git' to look at commands and then use said commands in the shell. Mac uses bash so it probably is run right from the shell there too. Honestly I don't know at all for windows.
Here are a couple of resources:
https://try.github.io/levels/1/challenges/1
https://www.youtube.com/watch?v=TI3yVcSahzk
If I had more time I would look for a really good one for you, but I'm going to be late for work!
I have developed some Unity3D projects using GitHub before. So to answer question 3 and the last part of 1 first, yes Unity projects use a file-system architecture that is perfectly compatible with GitHub and once your used to it it is a great tool for team development.
Answer for question 1:
GitHub is just a name brand for a centralized version control system and there are other brands out there with similar offerings such as bit bucket. Google this term for more info. also look into distributed version control as well.
In all honesty though, if your new to developing, the product you will be making will most likely not be of much interest to other people on GitHub and your public repository will probably go unnoticed. If you believe that what you are creating is of such great value it needs to be kept secret, then investing a few dollars a month in a premium service is recommended anyway.
For other options, one would be to set up a central Git repository on a server (or one of your home computers) that you or one of you project mates is running. This might be a more complicated method but you would learn a lot of other useful things along the way.
Answer for question 2:
See -https://guides.github.com/activities/hello-world/- for github's intro tutorial. Also Youtube has some decent offering if you search for how to use Git Hub.
It can be a little daunting to work with something new and attempt to understand the documentation. If you are planning on getting serious about development though, especially in a corporate setting, you need to learn GIT and practice reading and understanding documentation.
Good Luck!
I recommend git for just about any text-based version control. If the files are binary heavy, it still works but it's not git's strength.
Until you get the central hosting worked out, you can use git bundle to share the changes offline.

Alternatives to Git? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
Is there any version control software with the functionality of Git, but which is not under a viral license? - A "viral license" being, by my definition, one which requires derived software to be under the same or an equally-restrictive license.
I'm not interested in an argument on or discussion about the GPL; it's outside the scope of this question and website.
Thanks.
Fossil is (and Codeville was) a BSD-licensed distributed revision control system.
Note that unless you're actually modifying the version control software itself, the license doesn't affect you; you're free to develop non-GPL'ed software using a GPL'ed tool to manage revisions.
The other options are :
Perforce
Bazaar
SVN
CVS
UPDATE:
Since 2 years passed since started professionally working with git (after 20 years of not-git...) I can say this:
GIT has it's advantages when it comes to merging code bases between branches and multiple users. Once you master it, and learn to ignore its - sometimes utterly confusing command line UI - can be easy to work with.
On the downside, GIT IS complex to understand and LEARN. There is a long steep learning phase, especially if you work from the command line in multiply branched repository (the common and the recommended approach). Working with UI tools like InteliJ IDE's can hide some of the details, but these require their learning attention and time too + some not so basic GIT knowledge. And this knowledge is required by ALL members of your team.
OLD AND (not so) BELOVED ANSWER:
Forget the license... You want to NOT use GIT for so many other reasons...
If you want things to work faster for your team - stay away from GIT. Why not use SVN? It is supported by any service that supports GIT, and is the most popular alternative to GIT (as far as I know).
To commit/merge/manage a team in GIT it'll take you exponentially more time than other SVN/Fossil/... All in the name of advance "distributed" design, and a rich set of methods to kill your code, merge it wrongly, give you so many options to do horrible mistakes (that happen to pro's and newbies alike), and do simple things the HARD HARD way. Were in reality it only serves the ritual hungry souls of geeky programmers, who would otherwise have to go home late and face the empty walls of their houses... (poetic answer too).
REALLY - It would actually be funny if it wasn't the number one pain-in-the-arse time killer in the office. And once you go GIT you can never go back, so my advice, don't let the geeks have it. Keep it out or pay the price.
And, yeah, I know the crowd here, and I am more than willing to loose a few points. It's not like it means anything real.

Collaborative Code Editing [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I work for a small web development company (6 people) and we've been in the market for a new code editor/development environment for quite some time.
Currently, we're using Dreamweaver's (CS3) coding side for our site development. Each site's files is hosted on a Dreamhost ftp server. All 6 of us work on the same set of live files on the remote ftp server. Dreamweaver has a handy file locking functionality that prevents us from overwriting each others changes by keeping us out of the same files.
Now, we've found that this form of development allows for very rapid development and love how easy it is to get things done. However there are many things we don't like. One of which is Dreamweaver's code editor. We also don't like our lack of code history for each site.
Does anyone know of a good alternative to Dreamweaver that has similar file locking/ftp functionality?
If not, could you explain to me the best configuration of a source control system for our team? We're willing to look at GIT, Mercurial, and Subversion. The new system would ideally:
1). Support multiple different code editors on different operating systems. (Windows 1st choice.)
2). Be almost as easy and quick to push out code as currently.
3). Allow for working on the files outside of the office network.
4). Be inexpensive.
I'm probably just showing my ignorance of how to use a version control system, but it doesn't seem logical for each of us to have a testing server on our computers with every single site setup with our own test database... That's very time consuming
What's your solution to our problem? I think we'll either have to upgrade to the latest version of Dreamweaver and stick with it forever, or we'll have to find some sort of ftp collaborative editor, or we'll have to implement version control.
Do the benefits of version control outweigh the extra amount of time it entails to push out code?
it doesn't seem logical for each of us
to have a testing server on our
computers with every single site setup
with our own test database... That's
very time consuming
That's generally the way to do it. Most modern frameworks will let you set up your development server in minutes, if not seconds -- using an embedded http server and database, for example. If you are stuck on an ancient platform, there are solutions like wamp that are only a little more difficult. Remember, that it's time that you spend once, but it lets you be faster. If the project is going to take any longer than a few hours, it should be beneficial. You don't waste time on debugging things your fellow developer just changed, or recovering production data from that silly database manipulation mistake you just made.
(Oh, and if your websites are just HTML+JavaScript, then you don't need any server locally, obviously.)
As for version control systems, the ones you mentioned are fine, with SVN requiring a little more setup and network access to the central server for commits. Git and Mercurial let you work and commit offline, and then push your changes to the central server or even just exchange them between developers. I think Mercurial works better on Windows at the moment.
Michael I hear your pain.
I can't claim to have fully researched all avenues, but I have really begun to love Git recently.
My first hurdle was learning about how Revision Control Systems (RCS) work. Before I would pick SVN vs Git vs HG vs Bazzar vs etc I evaluated what I wanted to do. And that was to work locally then share my work, and push to a webserver.
I found this great comparison website: http://whygitisbetterthanx.com
From that I could clearly see that Git was worth the time to learn. As the backwards learner I am I dove into a project and learned how quickly things could become messy, then I began reading: http://gitready.com/ and http://book.git-scm.com/ and http://progit.org/book/
Then I realized I needed an organizational strategy. I went searching and found something I (and a lot of others) liked: http://nvie.com/posts/a-successful-git-branching-model/
This is also a great resource:
http://danielmiessler.com/study/git/
There's a bit of a primer. Let me try to answer your questions more directly.
1.) Git is a command-line tool. For windows there's cygwin.
I found the documentation at github to be the best. Even if you don't plan on using them for code hosting. Have a look at http://help.github.com/ Use the setup git link to get started.
2.) Since you ask for versioning there is a bit more work. Its a different model, a different way of thinking. Rather than not be able to edit the file which is currently what happens, your commits might collide, and in that case git provides great diff tools to help resolve the conflict.
3.) Git is whats called a DCVS or distributed version control system. Here's an example:
lets say you need to do some work over the weekend. You do a git pull from the server before you leave work. At home you can continue to work, create new branches etc. Then when you have an internet connection you can push your changes back to the server.
4.) Git is free!
As for pushing your work to the webserver you'll need to setup something like this:
http://toroid.org/ams/git-website-howto
Looks pretty easy, I'm gonna try it out next weekend.
I hope you find some of what I wrote helpful, if not maybe the links are.

Bazaar, Mercurial or other for single user version control? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
Which version control system would you recommend for:
single user
looking for simple, easy to use
generally small simple projects
working on windows
usually coding python
no server
Use would be more finding old code than complicated branching situations.
From other similar posts, Bazaar and Mercurial seem the best distributed version control systems for my needs. I'm somewhat leaning towards Bazaar as it seems simpler.
The main complaint I read about Baazar was that it was slow, but speed was to be improved in version 2, to be released this summer. The new version has not yet been released, but there is a 2.0.0rc2.
I'm wondering if anything has changed recently or if anyone has any strong feelings on the subject.
EDIT: After reading the responses and browsing some alternatives, I'm going with Bazaar, at least for the moment. For my needs, the products mentioned seemed rather similar. Bazaar has documentation specifically aimed at a solo developer and seems rather easy to use. Others seem more aimed at groups or those with central servers. Other systems may be as good, but I thought starting to use something was more important than spending time trying to find the perfect program.
Thanks, everyone!
(Should I have written this as an edit, an answer or a comment?)
If you're just single developer working on small projects, any version control system should be fast enough.
I'm a Mercurial developer myself and will of course recommend that :-) I like how Mercurial has one central concept: the changeset graph. The graph resides inside a repository (a clone). You can have several lines of development in the same clone. This can be in the form of multiple heads, perhaps marked with the bookmarks extension or as named branches. You can also use several clones to keep things separated, or you can go back and forth: it is easy to separate a combined clone (use hg clone -r REV to obtain part of the revision graph). See this blog post for pretty pictures.
For Windows (and other platforms too) you have TortoiseHg, which gives you a very nice graphical interface. TortoiseHg also integrates with many excellent plugins for Mercurial, in particular the record extension, which lets you pick out individual changes from a file when you commit. Using that, you can edit several files, and then commit those changes as several independent changesets.
Finally, you should also know about Mercurial: The Definitive Guide, the free online book about Mercurial.
Bazaar is very good for your needs, and I'm doubt you found speed issues with your projects. Bazaar has very nice GUI front-end called Bazaar Explorer which I'd recommend over TortoiseBzr. (Bazaar Explorer bundled into standard 2.0 installer now.)
Of course if you choose Mercurial you don't lose much.
So you'd better test one and another and make your choice. Every zealot will recommend you his favorite.
If you're a Windows user, nothing IMO can beat TortoiseSVN in terms of usability and ease-of-use.
Definitely Subversion....
It's free, very very easy to set up and use, doesn't require a server because it can just access the local filesystem, and you can find loads and loads of documentation and help if you get stuck because I think there are far more people who use SVN than bazaar or git for example....
You can just download TortoiseSVN (http://tortoisesvn.tigris.org/) en start using it....Nothing else is required for getting started because tortoisesvn has subversion built-in I believe....
I've done some playing with all of them.
The key thing that has attracted me to Bazaar is its flexibility.
Want to operate in centralized mode (ala SVN)? You can do that. Want to operate in distributed mode (ala Mercurial or git)? You can do that.
And here's where it gets better: you can do both. Say you're working with a guy that came over from SVN and he just doesn't like the distributed concept one little bit. Fine. Let him work in centralized mode while the rest of the team works in distributed mode. If he's away from the central repository, he can even take his checkout offline and do offline commits while he's gone. Then he can commit them all when he gets back.
While some of the other systems have ways to approximate different models, none seem as committed to flexibility as bazaar.
I have used SVN, Git and Bzr quite extensively on various different projects. I am currently using Bzr on a single user project and it is very easy to set up and use. No need to set up a server and comes with TortoiseBzr which works well, it may not be as feature complete as TortoiseSVN is but for a one-man project you should have everything you need. There are a few things missing such as the ability to Tag revision in which case you need to resort to using the command line interface. I considered Mercurial about a year ago, but I haven't used it in a real-world situation yet so I wouldn't be able to compare. I decided against it because TortoiseHG didn't seem very mature at the time, I expect it will have improved since then.
I quite like darcs, it uses something called patch theory which is, as far is I know, unique in version control software.
I have been using Bazaar for a while and was pretty happy with it. With all the hype going on about git, I gave it a try. And even though it has pretty complex concepts, I can only say that it was worth the switch. I now use it for all my projects. No matter how small. And I think TortoiseGit has become good enough to be usable.
I can see the following good points about it:
It's fast
Branching and merging is so simple you could even say it's fun
It's got funky commands I haven't seen anywhere else (f.ex.: stash and rebase)
It's hyped. Consequently the community is quite active and you can find a lot of material on it
You can grab a copy of gitorious to manage your projects privately
Some things I don't like as much:
branch display in gitk "feels" strange to me
I use git and it works great for me. I use msysgit on Windows.
I will recommend Git always. It is fast, doesn't need server, branching and merging is excellent. For Windows you need to get MsysGit.
Mercurial is also very good with a bit easier interface for user.

How important is version control integration with your bug tracking software [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Currently we use FogBugz for tracking issues and found it to be ok. I'm looking for something else that can allow end users the ability to track their cases along with us. And something that actually works well with email. I've found a few alternatives that support those features but they don't integrate with version control. We've got all the SVN hooks in fog bugz and we use them - but I haven't really found them all that useful. Has anyone found a really good reason to need version control integration with the bug trackers?
Clearly, this kind of integration is not something that is essential to the operation of the software. With a bit of discipline every check-in can be accompanied with a bug number manually, and every bug resolution can manually have a version control tag added to it.
All else being equal however, I personally will always prefer automation over 'discipline of the users', because the latter will always sooner or later let you down from time to time. Not because the users are malicious or incompetent, but simply because people cannot be 100% alert all of the time.
I find the integration of SVN with TRAC very helpful. Through SVN hooks, commits to the repository with a ticket number insert a comment on the ticket with a link to a nice visual HTML representation of the revision number, showing inserts, deletes, and diffs.
As a supervisor over a small team of programmers, I find this as a helpful tool for me to do code reviews, so I can verify that the commit truly addresses the associated issue. I wouldn't exactly call this integration essential, but it was a nice free extra on my issue tracker that I've grown to love.
It is absolutely critical for us.
Here is a typical commit log for one of our projects (sample):
Make sure filedes is cleared in child list prior to reallocating
When p->child-filedes is > 0, the child list is active and can not
be collected.
[ Impact: Closes bug 123457 ]
Note the [ Impact: ] line, which could also be "Relates-To", "Caused" or any number of other things.
This lets us use simple greps and automated scripts allowing the person committing to automatically close, or even re-open a bug.
Though we typically use Git and Mercurial, these sort of hooks would work on (almost) any VCS, especially proprietary ones that do not feature some modular plug-in that you need.
If you think of your bug system as just another part of your VCS, its really easy to see how they depend upon each-other.
Other stuff, such as fetching patches submitted with bugs is possible, too.
It is a question about your code size, and how many bugs you need to track.
And it is also really useful for non coders in the organisation i.e. managers and customer support. They can find answers to questions like "When and where was this bug fixed"...
I think it's helpful to distinguish between bugs found internal to the development organization, e.g. from peer code review, versus bugs found by a test group that is external to the development organization.
The (small) benefit to coordinating version control with bugs found by an external test group would be for historical reference.
The larger benefit is in coordinating bugs found via peer code review with version control -- by doing so you can certify that all code is peer review bug free before releasing it to external test groups; a common requirement.
FYI, Code Collaborator from SmartBear, Inc. handles this nicely.
I have found version control integration to be extremely helpful in maintaining and managing multiple versions (stable, development trunk, etc.) of a project.
Using the version control integration and a bit of discipline from coders to reference bug tickets in commits (or some pre-commit hooks to forcibly require ticket references) has allowed us to quickly and easily generate lists of changesets that are required to fix any given bug. This is instrumental when merging the fixes into various stable branches of the code.
It's not a necessity, but it certainly makes life easier for release management.
I've used SVN + Trac and Atlassian's Jira product with Fisheye SVN plugin and have found both tools to be very good. Trac seems to be a bit simpler, but very easy to use. Jira, in my opinion, had a nicer look and feel and quite a few more bells and whistles, but was almost too much at times.