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

Re: [PATCH v4 17/22] read-cache: unlink old sharedindex files

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 1, 2017, 21:39 UTC
Message-ID
<xmqqefygfzhn.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20170227180019.18666-18-chriscool@tuxfamily.org>
Christian Couder <christian.couder@gmail.com> writes:
Show 34 quoted lines
> +static int can_delete_shared_index(const char *shared_index_path)
> +{
> +	struct stat st;
> +	unsigned long expiration;
> +
> +	/* Check timestamp */
> +	expiration = get_shared_index_expire_date();
> +	if (!expiration)
> +		return 0;
> +	if (stat(shared_index_path, &st))
> +		return error_errno(_("could not stat '%s"), shared_index_path);
> +	if (st.st_mtime > expiration)
> +		return 0;
> +
> +	return 1;
> +}
> +
> +static int clean_shared_index_files(const char *current_hex)
> +{
> +	struct dirent *de;
> +	DIR *dir = opendir(get_git_dir());
> +
> +	if (!dir)
> +		return error_errno(_("unable to open git dir: %s"), get_git_dir());
> +
> +	while ((de = readdir(dir)) != NULL) {
> +		const char *sha1_hex;
> +		const char *shared_index_path;
> +		if (!skip_prefix(de->d_name, "sharedindex.", &sha1_hex))
> +			continue;
> +		if (!strcmp(sha1_hex, current_hex))
> +			continue;
> +		shared_index_path = git_path("%s", de->d_name);
> +		if (can_delete_shared_index(shared_index_path) > 0 &&
Is this "can" or "should"?  This sounds like the latter.
> +		    unlink(shared_index_path))
> +			error_errno(_("unable to unlink: %s"), shared_index_path);

This does not make the entire operation to fail (and I think the behaviour you have here is preferrable--we just want to report without failing the main operation).

But should it be reported as "error: unable to unlink"? It may be better to give this message as a warning.

Previous: Christian CouderNext: Christian Couder
Message 24 of 26 in “Add configuration options for split-index”
  1. 00/22 Add configuration options for split-indexChristian Couder, Feb 27, 2017
  2. 01/22 config: mark an error message up for translationChristian Couder, Feb 27, 2017
  3. 04/22 split-index: add {add,remove}_split_index() functionsChristian Couder, Feb 27, 2017
  4. 03/22 config: add git_config_get_split_index()Christian Couder, Feb 27, 2017
  5. 10/22 config: add git_config_get_max_percent_split_change()Christian Couder, Feb 27, 2017
  6. 11/22 read-cache: regenerate shared index if necessaryChristian Couder, Feb 27, 2017
  7. 05/22 read-cache: add and then use tweak_split_index()Christian Couder, Feb 27, 2017
  8. 06/22 update-index: warn in case of split-index incoherencyChristian Couder, Feb 27, 2017
  9. 07/22 t1700: add tests for core.splitIndexChristian Couder, Feb 27, 2017
  10. 08/22 Documentation/config: add information for core.splitIndexChristian Couder, Feb 27, 2017
  11. 09/22 Documentation/git-update-index: talk about core.splitIndex config varChristian Couder, Feb 27, 2017
  12. 02/22 t1700: change here document styleChristian Couder, Feb 27, 2017
  13. 12/22 t1700: add tests for splitIndex.maxPercentChangeChristian Couder, Feb 27, 2017
  14. 14/22 sha1_file: make check_and_freshen_file() non staticChristian Couder, Feb 27, 2017
  15. 16/22 config: add git_config_get_expiry() from gc.cChristian Couder, Feb 27, 2017
  16. 19/22 read-cache: refactor read_index_from()Christian Couder, Feb 27, 2017
  17. 22/22 Documentation/git-update-index: explain splitIndex.*Christian Couder, Feb 27, 2017
  18. 20/22 read-cache: use freshen_shared_index() in read_index_from()Christian Couder, Feb 27, 2017
  19. 18/22 t1700: test shared index file expirationChristian Couder, Feb 27, 2017
  20. 13/22 Documentation/config: add splitIndex.maxPercentChangeChristian Couder, Feb 27, 2017
  21. 15/22 read-cache: touch shared index files when usedChristian Couder, Feb 27, 2017
  22. Junio C HamanoMar 1, 2017
  23. 17/22 read-cache: unlink old sharedindex filesChristian Couder, Feb 27, 2017
  24. Junio C HamanoMar 1, 2017
  25. 21/22 Documentation/config: add splitIndex.sharedIndexExpireChristian Couder, Feb 27, 2017
  26. Junio C HamanoMar 1, 2017

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.