equal
deleted
inserted
replaced
785 if force: |
785 if force: |
786 changes[0].extend(changes[6]) # mq may commit unchanged files |
786 changes[0].extend(changes[6]) # mq may commit unchanged files |
787 |
787 |
788 # check subrepos |
788 # check subrepos |
789 subs = [] |
789 subs = [] |
|
790 removedsubs = set() |
|
791 for p in wctx.parents(): |
|
792 removedsubs.update(s for s in p.substate if match(s)) |
790 for s in wctx.substate: |
793 for s in wctx.substate: |
|
794 removedsubs.discard(s) |
791 if match(s) and wctx.sub(s).dirty(): |
795 if match(s) and wctx.sub(s).dirty(): |
792 subs.append(s) |
796 subs.append(s) |
793 if subs and '.hgsubstate' not in changes[0]: |
797 if (subs or removedsubs) and '.hgsubstate' not in changes[0]: |
794 changes[0].insert(0, '.hgsubstate') |
798 changes[0].insert(0, '.hgsubstate') |
795 |
799 |
796 # make sure all explicit patterns are matched |
800 # make sure all explicit patterns are matched |
797 if not force and match.files(): |
801 if not force and match.files(): |
798 matched = set(changes[0] + changes[1] + changes[2]) |
802 matched = set(changes[0] + changes[1] + changes[2]) |
828 if editor: |
832 if editor: |
829 cctx._text = editor(self, cctx, subs) |
833 cctx._text = editor(self, cctx, subs) |
830 edited = (text != cctx._text) |
834 edited = (text != cctx._text) |
831 |
835 |
832 # commit subs |
836 # commit subs |
833 if subs: |
837 if subs or removedsubs: |
834 state = wctx.substate.copy() |
838 state = wctx.substate.copy() |
835 for s in subs: |
839 for s in subs: |
836 self.ui.status(_('committing subrepository %s\n') % s) |
840 self.ui.status(_('committing subrepository %s\n') % s) |
837 sr = wctx.sub(s).commit(cctx._text, user, date) |
841 sr = wctx.sub(s).commit(cctx._text, user, date) |
838 state[s] = (state[s][0], sr) |
842 state[s] = (state[s][0], sr) |