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

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

From
WPWaskiewicz Jr, Peter P <peter.p.waskiewicz.jr@intel.com>
Date
Jul 17, 2013, 21:23 UTC
Message-ID
<1374096215.9814.3.camel@ppwaskie-mobl2.jf.intel.com>
In-Reply-To
<20130717135454.16504.69116.stgit@zbitter.fedora>
On Wed, 2013-07-17 at 15:57 +0200, Zane Bitter wrote:
Show 7 quoted lines
> 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".

I actually had someone else mention this problem to me last week. This looks good, I'll be applying this later today.

Cheers, -PJ

Show 45 quoted lines
> 
> 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)
> 
Previous: Keller, Jacob E
Message 3 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.