Show More
@@ -808,7 +808,7 b' class gitsubrepo(abstractsubrepo):' | |||||
808 |
|
808 | |||
809 | def dirty(self, ignoreupdate=False): |
|
809 | def dirty(self, ignoreupdate=False): | |
810 | if self._gitmissing(): |
|
810 | if self._gitmissing(): | |
811 |
return |
|
811 | return self._state[1] != '' | |
812 | if not ignoreupdate and self._state[1] != self._gitstate(): |
|
812 | if not ignoreupdate and self._state[1] != self._gitstate(): | |
813 | # different version checked out |
|
813 | # different version checked out | |
814 | return True |
|
814 | return True | |
@@ -818,6 +818,9 b' class gitsubrepo(abstractsubrepo):' | |||||
818 |
|
818 | |||
819 | def get(self, state, overwrite=False): |
|
819 | def get(self, state, overwrite=False): | |
820 | source, revision, kind = state |
|
820 | source, revision, kind = state | |
|
821 | if not revision: | |||
|
822 | self.remove() | |||
|
823 | return | |||
821 | self._fetch(source, revision) |
|
824 | self._fetch(source, revision) | |
822 | # if the repo was set to be bare, unbare it |
|
825 | # if the repo was set to be bare, unbare it | |
823 | if self._gitcommand(['config', '--bool', 'core.bare']) == 'true': |
|
826 | if self._gitcommand(['config', '--bool', 'core.bare']) == 'true': | |
@@ -935,6 +938,8 b' class gitsubrepo(abstractsubrepo):' | |||||
935 | mergefunc() |
|
938 | mergefunc() | |
936 |
|
939 | |||
937 | def push(self, force): |
|
940 | def push(self, force): | |
|
941 | if not self._state[1]: | |||
|
942 | return True | |||
938 | if self._gitmissing(): |
|
943 | if self._gitmissing(): | |
939 | raise util.Abort(_("subrepo %s is missing") % self._relpath) |
|
944 | raise util.Abort(_("subrepo %s is missing") % self._relpath) | |
940 | # if a branch in origin contains the revision, nothing to do |
|
945 | # if a branch in origin contains the revision, nothing to do | |
@@ -991,6 +996,8 b' class gitsubrepo(abstractsubrepo):' | |||||
991 |
|
996 | |||
992 | def archive(self, ui, archiver, prefix): |
|
997 | def archive(self, ui, archiver, prefix): | |
993 | source, revision = self._state |
|
998 | source, revision = self._state | |
|
999 | if not revision: | |||
|
1000 | return | |||
994 | self._fetch(source, revision) |
|
1001 | self._fetch(source, revision) | |
995 |
|
1002 | |||
996 | # Parse git's native archive command. |
|
1003 | # Parse git's native archive command. | |
@@ -1015,10 +1022,10 b' class gitsubrepo(abstractsubrepo):' | |||||
1015 |
|
1022 | |||
1016 |
|
1023 | |||
1017 | def status(self, rev2, **opts): |
|
1024 | def status(self, rev2, **opts): | |
1018 | if self._gitmissing(): |
|
1025 | rev1 = self._state[1] | |
|
1026 | if self._gitmissing() or not rev1: | |||
1019 | # if the repo is missing, return no results |
|
1027 | # if the repo is missing, return no results | |
1020 | return [], [], [], [], [], [], [] |
|
1028 | return [], [], [], [], [], [], [] | |
1021 | rev1 = self._state[1] |
|
|||
1022 | modified, added, removed = [], [], [] |
|
1029 | modified, added, removed = [], [], [] | |
1023 | if rev2: |
|
1030 | if rev2: | |
1024 | command = ['diff-tree', rev1, rev2] |
|
1031 | command = ['diff-tree', rev1, rev2] |
@@ -334,6 +334,33 b" Don't crash if the subrepo is missing" | |||||
334 | $ hg sum | grep commit |
|
334 | $ hg sum | grep commit | |
335 | commit: (clean) |
|
335 | commit: (clean) | |
336 |
|
336 | |||
|
337 | Don't crash if the .hgsubstate entry is missing | |||
|
338 | ||||
|
339 | $ hg update 1 -q | |||
|
340 | $ hg rm .hgsubstate | |||
|
341 | $ hg commit .hgsubstate -m 'no substate' | |||
|
342 | created new head | |||
|
343 | $ hg tag -l nosubstate | |||
|
344 | $ hg manifest | |||
|
345 | .hgsub | |||
|
346 | a | |||
|
347 | ||||
|
348 | $ hg status -S | |||
|
349 | $ hg sum | grep commit | |||
|
350 | commit: 1 subrepos | |||
|
351 | ||||
|
352 | $ hg commit -m 'restore substate' | |||
|
353 | committing subrepository s | |||
|
354 | $ hg manifest | |||
|
355 | .hgsub | |||
|
356 | .hgsubstate | |||
|
357 | a | |||
|
358 | $ hg sum | grep commit | |||
|
359 | commit: (clean) | |||
|
360 | ||||
|
361 | $ hg update -qC nosubstate | |||
|
362 | $ ls s | |||
|
363 | ||||
337 | Check hg update --clean |
|
364 | Check hg update --clean | |
338 | $ cd $TESTTMP/ta |
|
365 | $ cd $TESTTMP/ta | |
339 | $ echo > s/g |
|
366 | $ echo > s/g |
General Comments 0
You need to be logged in to leave comments.
Login now