I guess that there are lots of copies/zip files for each subproject, but that the different "branches" live in different folders/computers or are distinguishable by some other means.
Then you have two options: either reconstruct the whole project history, or use the current releases as distinct merge bases.
History reconstruction
Go this way only when you need the full history later, since this is lots of work.
The first problem is to identify which versions got copied from each other. You can use the file time-stamps to get a rough history estimation(look for the newest file in each copy). After you have a time line, you can import them into a VCS and look if there are reversing patches coming up (something got included in rev4, excluded in rev5 and included again in rev6), which is an indicator that the order isn't correct. Also look if the changes makes mostly sense (changes create more features and lesser bugs). Be prepared to do this step more than one time until you have the correct order. So don't use the final VCS for this, since you might want to throw the intermediate steps away.
I also recommend to have the repository on the local machine, since you need to do lot's of diffs between multiple versions, and don't want any network latencies (I use mercurial and tortoiseHg for such tasks).
At the end of this process you should have all copies in chronological order, and know (at least roughly) where the different branches are based on.
So when you have something like this:
Base --> A --> A'
\
\---> B --> B'
\
\--> C
You can start by creating the trunk with Base, add changes A and A' there. Then you create branch B with A as parent, and add B'. Then create branch C with B as parent. And so on for every copy you have.
After you have the reconstructed history, you can start the big merge. But unless you could reconstruct internal merges during the reconstruction, you will have no advantage using this way when you pull everything together.
Only releases
Import the base version into the VCS. Then create a branch for every other release, and put each other release into the corresponding branch. Afterwards you can merge everything.