I've tried to find similar situations on SO and elsewhere but have come up empty handed, but I can't imagine this is unique.
I'm working on converting my company from subversion to git (GitHub). We have a large SVN repository (around 60gb) internally that we'll be converting and our structure is definitely not standard. Our repository looks something like this:
branches\
version_1.0
version_1.1
version_1.2
version_1.3
version_1.4
version_1.5
tags\
cust_a_test
cust_a_prod
cust_b_test
cust_b_prod
cust_c_test
cust_c_prod
cust_c_dev
cust_d_test
cust_d_prod
cust_e_test
cust_e_test_1.3
cust_e_prod
cust_f_test
cust_f_prod
Each of our customers can be on (potentialy) any of the versions in the branches\ folder. The tags are not static however, so we're actively making commits to the customer tags (to sync them with the branch versions, hotfixes, customer specific modifications, etc). The structure is not consistent either, as some customers have only a test/prod tag, while others have dev/test/prod or version specific tags while they test things. It's a mess.
I'm envisioning moving us on to git using a structure like this:
branches\
master
version_1.5_dev
version_1.5_test
version_1.5_prod
version_1.4_dev
version_1.4_test
version_1.4_prod
version_1.3_dev
version_1.3_test
version_1.3_prod
version_1.2_dev
version_1.2_test
version_1.2_prod
version_1.1_dev
version_1.1_test
version_1.1_prod
version_1.0_dev
version_1.0_test
version_1.0_prod
cust_a_prod
cust_a_test
cust_a_dev
cust_b_prod
cust_b_test
cust_b_dev
cust_c_prod
cust_c_test
cust_c_dev
cust_d_prod
cust_d_test
cust_d_dev
cust_e_prod
cust_e_test
cust_e_dev
I initially wanted to do a separate repository for each version / customer (we develop fixes/additions for older supported versions while adding to our latest version) but there are too many limitations with merging changes between repositories that it seems like branching is a much better fit.
Is it possible to import our subversion repository into git while converting the tags to branches and (ideally) retaining the history of each branch/tag?
With the number of customers that we have it's possible to create the branches manually, if a bit time consuming, but that would not include history.
I've used svn2git with great success. You can export to multiple repos, define custom paths to branches/tags/trunk. The samples directory has great examples. I did find a features not defined in the samples. You can define a prefix to prepend to any path that is exported.
match /branches/bar/
repository my_repo
branch bar
prefx foo
end match
The end results I branch foo/bar is created in repo my_repo.
https://github.com/svn-all-fast-export/svn2git
EDIT:
Because of the flexibility of the tool you can easily convert tags to branches
match /tags/cust_a_test/
repository my_repo
branch cust_a_test
end match