Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Added git_stash_apply() and git_stash_pop() APIs #2705

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ Microsoft Corporation
Olivier Ramonat
Peter Drahoš
Pierre Habouzit
Pierre-Olivier Latour
Przemyslaw Pawelczyk
Ramsay Jones
Robert G. Jakabosky
Expand Down
68 changes: 64 additions & 4 deletions include/git2/stash.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,47 @@ GIT_EXTERN(int) git_stash_save(
const char *message,
unsigned int flags);

typedef enum {
GIT_APPLY_DEFAULT = 0,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to have a doc on what DEFAULT means.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, I just copied exactly what you did for git_stash_save() :) Seriously though, default means no options. You can't really describe that. I guess DEFAULT is just a syntactic convenience for 0, I was just following your pattern. I don't care if people pass 0 or DEFAULT. Is there a convention here in libgit2 regarding providing enum "aliases" for 0 flags?

Just give me the description for DEFAULT for git_stash_save() and I'll model mine on yours.


/* Try to reinstate not only the working tree's changes,
* but also the index's ones.
*/
GIT_APPLY_REINSTATE_INDEX = (1 << 0),
} git_apply_flags;

/**
* Apply a single stashed state from the stash list.
*
* If any untracked or ignored file saved in the stash already exist in the
* workdir, the function will return GIT_EEXISTS and both the workdir and index
* will be left untouched.
*
* If local changes in the workdir would be overwritten when applying
* modifications saved in the stash, the function will return GIT_EMERGECONFLICT
* and the index will be left untouched. The workdir files will be left
* unmodified as well but restored untracked or ignored files that were saved
* in the stash will be left around in the workdir.
*
* If passing the GIT_APPLY_REINSTATE_INDEX flag and there would be conflicts
* when reinstating the index, the function will return GIT_EUNMERGED and both
* the workdir and index will be left untouched.
*
* @param repo The owning repository.
*
* @param index The position within the stash list. 0 points to the
* most recent stashed state.
*
* @param flags Flags to control the applying process. (see GIT_APPLY_* above)
*
* @return 0 on success, GIT_ENOTFOUND if there's no stashed state for the given
* index, or error code. (see details above)
*/
GIT_EXTERN(int) git_stash_apply(
git_repository *repo,
size_t index,
unsigned int flags);

/**
* This is a callback function you can provide to iterate over all the
* stashed states that will be invoked per entry.
Expand All @@ -70,7 +111,7 @@ GIT_EXTERN(int) git_stash_save(
* @param message The stash message.
* @param stash_id The commit oid of the stashed state.
* @param payload Extra parameter to callback function.
* @return 0 to continue iterating or non-zero to stop
* @return 0 to continue iterating or non-zero to stop.
*/
typedef int (*git_stash_cb)(
size_t index,
Expand All @@ -90,7 +131,7 @@ typedef int (*git_stash_cb)(
*
* @param payload Extra parameter to callback function.
*
* @return 0 on success, non-zero callback return value, or error code
* @return 0 on success, non-zero callback return value, or error code.
*/
GIT_EXTERN(int) git_stash_foreach(
git_repository *repo,
Expand All @@ -105,13 +146,32 @@ GIT_EXTERN(int) git_stash_foreach(
* @param index The position within the stash list. 0 points to the
* most recent stashed state.
*
* @return 0 on success, or error code
* @return 0 on success, GIT_ENOTFOUND if there's no stashed state for the given
* index, or error code.
*/

GIT_EXTERN(int) git_stash_drop(
git_repository *repo,
size_t index);

/**
* Apply a single stashed state from the stash list and remove it from the list
* if successful.
*
* @param repo The owning repository.
*
* @param index The position within the stash list. 0 points to the
* most recent stashed state.
*
* @param flags Flags to control the applying process. (see GIT_APPLY_* above)
*
* @return 0 on success, GIT_ENOTFOUND if there's no stashed state for the given
* index, or error code. (see git_stash_apply() above for details)
*/
GIT_EXTERN(int) git_stash_pop(
git_repository *repo,
size_t index,
unsigned int flags);

/** @} */
GIT_END_DECL
#endif
Loading