{"action":"created","issue":{"url":"https://api.github.com/repos/freedoom/freedoom/issues/202","labels_url":"https://api.github.com/repos/freedoom/freedoom/issues/202/labels{/name}","comments_url":"https://api.github.com/repos/freedoom/freedoom/issues/202/comments","events_url":"https://api.github.com/repos/freedoom/freedoom/issues/202/events","html_url":"https://github.com/freedoom/freedoom/issues/202","id":122639514,"number":202,"title":"Get rid of symbolic links","user":{"login":"fragglet","id":96821,"avatar_url":"https://avatars.githubusercontent.com/u/96821?v=3","gravatar_id":"","url":"https://api.github.com/users/fragglet","html_url":"https://github.com/fragglet","followers_url":"https://api.github.com/users/fragglet/followers","following_url":"https://api.github.com/users/fragglet/following{/other_user}","gists_url":"https://api.github.com/users/fragglet/gists{/gist_id}","starred_url":"https://api.github.com/users/fragglet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fragglet/subscriptions","organizations_url":"https://api.github.com/users/fragglet/orgs","repos_url":"https://api.github.com/users/fragglet/repos","events_url":"https://api.github.com/users/fragglet/events{/privacy}","received_events_url":"https://api.github.com/users/fragglet/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-12-17T01:08:24Z","updated_at":"2015-12-17T08:16:03Z","closed_at":null,"body":"Freedoom has a slightly weird setup where we store resources (graphics, sounds, etc.) in subdirectories by the creator of the resource, and then symbolically link them into the parent directory for deutex to read.\r\n\r\nThis made some kind of sense years ago when there was no version control and I was trying to divide up the repository in a way that I thought made sense. But I don't think it's a good idea any more. It causes several problems:\r\n\r\n* Symbolic links don't exist on Windows, so it is difficult to submit changes to Freedoom. Example is #195 where @Blastfrog encountered problems because of this.\r\n\r\n* The repository is harder to browse in GitHub because you can't just find a resource and click it - you just get a \"symbolic link\" display telling you that your resource is in another directory.\r\n\r\n* Resources often have more than one creator. This causes problems because if someone edits a resource originally made by someone else, it's no longer clear where that resource belongs. For example I took the \"policy\" that it should resources go in the directory of their original creator, but I've also seen resources moved between directories when making a change. Lack of consistency means that the directories become meaningless or even misleading.\r\n\r\n* Subdirectories duplicate the functionality of a version control repository. You can already see who made a resource by checking the revision history of a file in Git, and it's likely to be more detailed and accurate than the subdirectory name.\r\n\r\n* Dividing up by directory can imply some kind of ownership or territory, which is counter to the nature of the project.\r\n\r\nI propose that we get rid of the subdirectories and move them into the parent directories as a more flat list of files. There are a few exceptions where this won't work; for example, lumps/genmidi, lumps/dmxgus, graphics/text are examples of functional subdirectories where we build things; they are not simply there to show authorship. In these cases we can still get rid of symlinks by changing their Makefiles to copy generated files into the parent directories.\r\n"},"comment":{"url":"https://api.github.com/repos/freedoom/freedoom/issues/comments/165380369","html_url":"https://github.com/freedoom/freedoom/issues/202#issuecomment-165380369","issue_url":"https://api.github.com/repos/freedoom/freedoom/issues/202","id":165380369,"user":{"login":"rjy","id":1372909,"avatar_url":"https://avatars.githubusercontent.com/u/1372909?v=3","gravatar_id":"","url":"https://api.github.com/users/rjy","html_url":"https://github.com/rjy","followers_url":"https://api.github.com/users/rjy/followers","following_url":"https://api.github.com/users/rjy/following{/other_user}","gists_url":"https://api.github.com/users/rjy/gists{/gist_id}","starred_url":"https://api.github.com/users/rjy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rjy/subscriptions","organizations_url":"https://api.github.com/users/rjy/orgs","repos_url":"https://api.github.com/users/rjy/repos","events_url":"https://api.github.com/users/rjy/events{/privacy}","received_events_url":"https://api.github.com/users/rjy/received_events","type":"User","site_admin":false},"created_at":"2015-12-17T08:16:03Z","updated_at":"2015-12-17T08:16:03Z","body":"See also\n\nhttps://www.doomworld.com/vb/freedoom/42768-handling-maps-in-svn/\n\nFollowing that thread I wanted to do symlink removal and had started writing a script to automatically generate a slew of commits. One thing I discovered was an infelicity in rename detection. If you delete a symlink and move a file into its place in the same commit, Git will see it as a filetype change, and e.g. git log --follow will not work. Symlink deletion and file rename need to occur in separate commits.\n"}}