in hgext/pushlog/feed.py [0:0]
def do_query(self):
"""Figure out what the query parameters are, and query the database
using those parameters."""
# Use an unfiltered repo because query parameters may reference hidden
# changesets. Hidden changesets are still in the pushlog. We'll
# treat them appropriately at the filter layer.
self.entries = []
if (
self.querystart == QueryType.COUNT
and not self.userquery
and not self.changesetquery
):
pushes = self.repo.pushlog.pushes(
offset=(self.page - 1) * self.querystart_value,
limit=self.querystart_value,
reverse=True,
branch=self.branch,
only_replicated=True,
)
for push in pushes:
if self.tipsonly and push.nodes:
nodes = [push.nodes[0]]
else:
nodes = push.nodes
for node in nodes:
self.entries.append((push.pushid, push.user, push.when, node))
self.totalentries = self.repo.pushlog.push_count()
else:
start_when = None
start_push_id = None
end_when = None
end_push_id = None
start_node = None
end_node = None
if self.querystart == QueryType.DATE:
start_when = self.querystart_value
elif self.querystart == QueryType.PUSHID:
start_push_id = int(self.querystart_value)
elif self.querystart == QueryType.CHANGESET:
start_node = self.querystart_value
if self.queryend == QueryType.DATE:
end_when = self.queryend_value
elif self.queryend == QueryType.PUSHID:
end_push_id = int(self.queryend_value)
elif self.queryend == QueryType.CHANGESET:
end_node = self.queryend_value
pushes = self.repo.pushlog.pushes(
reverse=True,
start_id=start_push_id,
start_id_exclusive=True,
end_id=end_push_id,
end_id_exclusive=False,
start_time=start_when,
start_time_exclusive=True,
end_time=end_when,
end_time_exclusive=True,
users=self.userquery,
start_node=start_node,
start_node_exclusive=True,
end_node=end_node,
end_node_exclusive=False,
nodes=self.changesetquery,
branch=self.branch,
only_replicated=True,
)
for push in pushes:
if self.tipsonly:
nodes = [push.nodes[0]]
else:
nodes = push.nodes
for node in nodes:
self.entries.append((push.pushid, push.user, push.when, node))
self.lastpushid = self.repo.pushlog.last_push_id_replicated()