Original motivation: In one of my repositories, when merging from the development branch to the production branch, I’d like to list all branches that were merged into the development branch since the last merge from the development branch into the production branch. If a branch consists of multiple changesets or the branch was merged multiple times, the branch should not be listed multiple times (at least not in a row). There doesn’t seem to be a way to remove duplicates from a list with existing template filters.

While I have not decided whether I want to remove all duplicates or only adjacent ones, I think both would be useful as template filters, so I’d like to implement them. Even if I end up implementing only one, it’s good to keep the other in mind.

The Unix tool uniq removes only adjacent duplicates, which I found surprising at first. I wouldn’t find "uniq" a good name for any variant of the filter, since removing only adjacent duplicates might surprise users not knowing the Unix tool, and removing all duplicates might surprise users knowing the Unix tool.

The name "removeduplicates" is descriptive but quite long. It could take an argument to choose whether all or only adjacent duplicates should be removed. Examples:

"{'a\na\nb\na'|splitlines|removeduplicates}\n"
-> "a b"

"{removeduplicates('a\na\nb\na'|splitlines, onlyadjacent=False)}\n"
-> "a b"

"{removeduplicates('a\na\nb\na'|splitlines, onlyadjacent=True)}\n"
-> "a b a"

Any other ideas?
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@lists.mercurial-scm.org
https://lists.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to