git/list[1] front-page[2] threads[3] people[4] search[5] about
 

RE: [StGit PATCH] Fix dirty index errors when resolving conflicts

From
Keller, Jacob E <jacob.e.keller@intel.com>
Date
Jul 17, 2013, 20:59 UTC
Message-ID
<02874ECE860811409154E81DA85FBB585658699B@ORSMSX104.amr.corp.intel.com>
In-Reply-To
<20130717135454.16504.69116.stgit@zbitter.fedora>
Show 64 quoted lines
> -----Original Message-----
> From: Zane Bitter [mailto:zbitter@redhat.com]
> Sent: Wednesday, July 17, 2013 6:57 AM
> To: git@vger.kernel.org
> Cc: Keller, Jacob E; Waskiewicz Jr, Peter P; catalin.marinas@gmail.com
> Subject: [StGit PATCH] Fix dirty index errors when resolving conflicts
> 
> The patch 6e8fdc58c786a45d7a63c5edf9c702f1874a7a19 causes StGit
> to raise
> "warnings" (actually: errors) in the event that there are changes staged in
> the index and a refresh is performed without specifying either --index or
> --force. This is great for preventing an entire class of common mistakes,
> but is also a giant pain when resolving conflicts after a pull/rebase.
> Depending on the workflow in use, this may occur with a frequency
> anywhere
> between "never" and "mulitple times on every pull".
> 
> This patch removes the pain by:
>  - Reporting unresolved conflicts *before* complaining about staged
>    changes, since it goes without saying that, when present, these are the
>    main problem.
>  - Not complaining about staged changes if there are no unstaged changes
> in
>    the working directory, since the presence of --index is immaterial in
>    this case.
> 
> Signed-off-by: Zane Bitter <zbitter@redhat.com>
> ---
>  stgit/commands/refresh.py |   13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/stgit/commands/refresh.py b/stgit/commands/refresh.py
> index a2bab42..331c18d 100644
> --- a/stgit/commands/refresh.py
> +++ b/stgit/commands/refresh.py
> @@ -247,18 +247,19 @@ def func(parser, options, args):
>      patch_name = get_patch(stack, options.patch)
>      paths = list_files(stack, patch_name, args, options.index,
> options.update)
> 
> -    # Make sure the index is clean before performing a full refresh
> -    if not options.index and not options.force:
> -        if not stack.repository.default_index.is_clean(stack.head):
> -            raise common.CmdException(
> -                'The index is dirty. Did you mean --index? To force a full refresh
> use --force.')
> -
>      # Make sure there are no conflicts in the files we want to
>      # refresh.
>      if stack.repository.default_index.conflicts() & paths:
>          raise common.CmdException(
>              'Cannot refresh -- resolve conflicts first')
> 
> +    # Make sure the index is clean before performing a full refresh
> +    if not options.index and not options.force:
> +        if not (stack.repository.default_index.is_clean(stack.head) or
> +                stack.repository.default_iw.worktree_clean()):
> +            raise common.CmdException(
> +                'The index is dirty. Did you mean --index? To force a full refresh
> use --force.')
> +
>      # Commit index to temp patch, and absorb it into the target patch.
>      retval, temp_name = make_temp_patch(
>          stack, patch_name, paths, temp_index = path_limiting)
ACK. This looks great. Thanks for noticing!
- Jake
Previous: Zane BitterNext: Waskiewicz Jr, Peter P
Message 2 of 3 in “Fix dirty index errors when resolving conflicts”
  1. Fix dirty index errors when resolving conflictsZane Bitter, Jul 17, 2013
  2. Keller, Jacob EJul 17, 2013
  3. Waskiewicz Jr, Peter PJul 17, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.