In theory, you could implement commit groups already in one of two ways: objects in a special ref that are just lists of commit hashes (tree-style) or a branch where every commit has, in addition to the last HEAD of the branch, all the other commits in the group as parents.