@@ -30,7 +30,8 @@ fixes
resets default user permission to initial state if there is a need for that.
Also forces users to set the default value for new forking permission.
- #535 improved apache wsgi example configuration in docs
- fixes #550 mercurial repositories comparision failed when origin repo had
additional not-common changesets
1.4.0 (**2012-09-03**)
----------------------
@@ -610,7 +610,7 @@ def differ(org_repo, org_ref, other_repo
other_repo.ui.setconfig('hooks', k, None)
unbundle = other_repo.getbundle('incoming', common=common,
heads=rheads)
heads=None)
buf = BytesIO()
while True:
@@ -14,4 +14,5 @@ from mercurial.node import hex
from mercurial.encoding import tolocal
from mercurial import discovery
from mercurial import localrepo
from mercurial import scmutil
\ No newline at end of file
from mercurial.discovery import findcommonoutgoing
@@ -36,7 +36,8 @@ from rhodecode.model.db import PullReque
from rhodecode.model.notification import NotificationModel
from rhodecode.lib.utils2 import safe_unicode
from rhodecode.lib.vcs.utils.hgcompat import discovery, localrepo, scmutil
from rhodecode.lib.vcs.utils.hgcompat import discovery, localrepo, scmutil, \
findcommonoutgoing
log = logging.getLogger(__name__)
@@ -164,7 +165,9 @@ class PullRequestModel(BaseModel):
#case two independent repos
common, incoming, rheads = discovery_data
if org_repo != other_repo and incoming:
revs = org_repo._repo.changelog.findmissing(common, rheads)
obj = findcommonoutgoing(org_repo._repo,
localrepo.locallegacypeer(other_repo._repo.local()))
revs = obj.missing
for cs in reversed(map(binascii.hexlify, revs)):
changesets.append(org_repo.get_changeset(cs))
@@ -183,7 +183,111 @@ class TestCompareController(TestControll
## files
response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s#C--826e8142e6ba">file1</a>""" % (r2_name, rev1, rev2))
finally:
RepoModel().delete(r1_id)
RepoModel().delete(r2_id)
def test_org_repo_new_commits_after_forking(self):
self.log_user()
repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg',
description='diff-test',
owner=TEST_USER_ADMIN_LOGIN)
Session().commit()
r1_id = repo1.repo_id
r1_name = repo1.repo_name
#commit something initially !
cs0 = ScmModel().create_node(
repo=repo1.scm_instance, repo_name=r1_name,
cs=EmptyChangeset(alias='hg'), user=TEST_USER_ADMIN_LOGIN,
author=TEST_USER_ADMIN_LOGIN,
message='commit1',
content='line1',
f_path='file1'
)
self.assertEqual(repo1.scm_instance.revisions, [cs0.raw_id])
#fork the repo1
repo2 = RepoModel().create_repo(repo_name='one-fork', repo_type='hg',
description='compare-test',
clone_uri=repo1.repo_full_path,
owner=TEST_USER_ADMIN_LOGIN, fork_of='one')
self.assertEqual(repo2.scm_instance.revisions, [cs0.raw_id])
r2_id = repo2.repo_id
r2_name = repo2.repo_name
#make 3 new commits in fork
cs1 = ScmModel().create_node(
repo=repo2.scm_instance, repo_name=r2_name,
cs=repo2.scm_instance[-1], user=TEST_USER_ADMIN_LOGIN,
message='commit1-fork',
content='file1-line1-from-fork',
f_path='file1-fork'
cs2 = ScmModel().create_node(
cs=cs1, user=TEST_USER_ADMIN_LOGIN,
message='commit2-fork',
content='file2-line1-from-fork',
f_path='file2-fork'
cs3 = ScmModel().create_node(
cs=cs2, user=TEST_USER_ADMIN_LOGIN,
message='commit3-fork',
content='file3-line1-from-fork',
f_path='file3-fork'
#compare !
rev1 = 'default'
rev2 = 'default'
response = self.app.get(url(controller='compare', action='index',
repo_name=r2_name,
org_ref_type="branch",
org_ref=rev1,
other_ref_type="branch",
other_ref=rev2,
repo=r1_name
))
try:
response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2))
response.mustcontain("""file1-line1-from-fork""")
response.mustcontain("""file2-line1-from-fork""")
response.mustcontain("""file3-line1-from-fork""")
#add new commit into parent !
message='commit2',
f_path='file2'
Status change: