krumpe,
This sounds like it has moved into the realm of a feature request rather than a question needing an answer. Perhaps you could create it as a feature request so that people can vote on it and share use-cases to demonstrate the need to Canvas. See How do I create a new feature idea? for more information.
Here are some thoughts about your comments here:
You mentioned version control. Do you have your students use that? If so, then students shouldn't need to retrieve a previous version from Canvas, they could just go the revision control system. If not, then it's important that Canvas keep separate names to provide that revision control.
In your explanation of submitting an assignment, you should tell them that part of the resubmission process is to go into their settings, chooose files, go to "unfiled", and rename the primary file with a -1, -2, or -3, whichever is the first one available. Then they can proceed to resubmit the file. Tell them that you will not accept a resubmission from them unless they do this. It's less than 30 seconds for them to do that, but 30 seconds per student per resubmission is nothing. For an instructor having to do that for every student resubmission, it becomes noticeable.
By renaming the file first, the proper name becomes available and so students could then re-submit without having to then go in and change the name before you can see it. That also allows for a numbering scheme that keeps the revision order (-1 is older than -2) as opposed to log file rotation order (where .1 is newer than .2 and you have to rename every file every time a new one is created).
Since you're teaching a programming class, perhaps one exercise could be to write a program that submits an assignment through the API. It first checks the files to see if the properly named file exists in the student's files, if it does, it renames it. Then it submits the file / assignment.
As a side note, It would also be a good idea to practice folder organization so that all of their files don't remain in "unfiled". If you're teaching good, structured, programming, you should also teach that for the files themselves.
Another idea is to use version control. They each have their own folder in a repository and when they go to submit an assignment, they just send you a link to that revision. Don't let them upload a file directly into Canvas, but make it a text-box submission. With some revision control systems, there is a web interface where you could go in and look a their code directly from the web, see differences and changes made from previous versions to see if they fixed what they needed to or not. You could, if you need to run it, download the version directly from there rather than having to go into Canvas, download the .java file, save it to disk, and then opening it up to execute it.
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.