Does IPFS support git merge strategies?

From @EtherTyper on Fri Jul 29 2016 00:26:28 GMT+0000 (UTC)

IPFS uses git to version files. Does this mean it supports using git’s complex merge strategies like recursive and octopus to track files?


Copied from original issue: https://github.com/ipfs/faq/issues/151

From @EtherTyper on Tue Aug 09 2016 22:22:51 GMT+0000 (UTC)

I believe someone can at @ipfs can mark this as answered by #156.

From @EtherTyper on Wed Aug 10 2016 14:55:04 GMT+0000 (UTC)

@RichardLitt Probably not. We should keep it for clarification, I think.

From @RichardLitt on Wed Aug 10 2016 15:14:03 GMT+0000 (UTC)

Sounds good. Decided to keep it, too (deleted a comment asking we should delete it as a dupe, before the response, for anyone who is curious about the information flow.)

From @llopv on Mon Dec 12 2016 01:02:48 GMT+0000 (UTC)

The question is not responded in the issue refered above.

According to the IPFS paper:

The full power of the Git version control tools is available to IPFS users. The object model is compatible, though not the same. It is possible to (a) build a version of the Git tools modified to use the IPFS object graph, (b) build a mounted FUSE filesystem that mounts an IPFS tree as a Git repo, translating Git filesystem read/writes to the IPFS formats.

From @EtherTyper on Mon Dec 12 2016 01:20:18 GMT+0000 (UTC)

@llopv Yes it is. The following reiterates on object immutability in IPFS, which means that objects cannot have differentials or be merged together natively.

… in effect objects added to ipfs cannot be deleted or edited. If an edit is required the file(s) must be edited locally and re-uploaded to ipfs, generating a new hash value for the file(s). …

From @EtherTyper on Mon Dec 12 2016 01:21:13 GMT+0000 (UTC)

@llopv Though it is weird the issue contradicts the whitepaper…

From @jbenet on Mon Dec 12 2016 02:36:56 GMT+0000 (UTC)

> The following reiterates on object immutability in IPFS, which means that objects cannot have differentials or be merged together natively.

What do you mean? Yes they can be-- this is exactly how git works. In git, all objects are immutable, and you use names (branches) to point to the latest immutable object. this is a hash-chain, merkle-dag or whatever you want to call it.