It doesn't handle merging of changes within files, however, if you take a step back, consider that you're essentially merging lists of metadata (with hashes of blobs), not just uploading these blobs; and because the systems that need to be synced are distributed, not always connected, and users want to read/write all of them you get the limitations of the classic CAP theorem.
E.g. the quite feasible scenario with two computers, both partially synced, and both getting files changed/added/removed/moved while the sync is happening. Consider applications creating temporary files while a document is being edited, and expecting to be able to create those files... and then it results in some app being unable to open the same document because it's "already open" on another machine. There are all kinds of interesting conflicts and race conditions possible, and you need to resolve them all in some way that doesn't weird out the users.
E.g. the quite feasible scenario with two computers, both partially synced, and both getting files changed/added/removed/moved while the sync is happening. Consider applications creating temporary files while a document is being edited, and expecting to be able to create those files... and then it results in some app being unable to open the same document because it's "already open" on another machine. There are all kinds of interesting conflicts and race conditions possible, and you need to resolve them all in some way that doesn't weird out the users.