Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

How to ensure that a repository has been synced to the Github servers?

Ouverte
#3,366 2 commentaires 2 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
github, go
Domaine
api, backend

Piste de recherche

Commencez par les appels RepositoriesService.Create, Get et Edit présentés dans la reproduction, puis comparez leurs réponses d’API avec l’état du dépôt sur github.com. Déterminez si le client expose une vérification fiable de la disponibilité pour activer Advanced Security et Secret Scanning, et documentez le comportement pris en charge ou la limitation lorsque le dépôt est encore en cours de propagation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

waiting for reply

The documentation for RepositoriesService.Create states that

Also note that this method will return the response without actually
waiting for GitHub to finish creating the repository and letting the
changes propagate throughout its servers. You may set up a loop with
exponential back-off to verify repository's creation.

However, doing so does not seem to be sufficient to ensure that a new repository has been synced.

I'm trying to create a new repository and enable Github Advanced Security features after it. The Update request returns a 200 and the result also indicates a success (the updated fields contain the value "enabled" which is what I wanted to achieve). When validating the result on github.com the features are disabled.
When I tried to sleep for a couple of seconds after creating and before updating the repo, the result is also visible on github.com.

Here is my code to reproduce the issue:

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/google/go-github/v67/github"
	log "github.com/sirupsen/logrus"
)

func main() {
	org := "some-org"
	name := "some-repo"
	token := "some-token"

	client := github.NewClient(nil).WithAuthToken(token)
	_, _, err := client.Repositories.Create(context.Background(), org, &github.Repository{
		Name:          github.String(name),
		AutoInit:      github.Bool(true),
		Visibility:    github.String("internal"),
		DefaultBranch: github.String("main"),
	})
	if err != nil {
		log.WithError(err).Fatal("unable to create repository")
	}
	maxRetries := 5
	for i := 0; i < maxRetries; i++ {
		_, _, err := client.Repositories.Get(context.Background(), org, name)
		if err == nil {
			break
		}
		if i == maxRetries-1 {
			log.Fatal("unable to verify repository creation")
		}
		time.Sleep(time.Duration(i*2) * time.Second)
	}

	// time.Sleep(5 * time.Second)

	repo := github.Repository{
		SecurityAndAnalysis: &github.SecurityAndAnalysis{
			AdvancedSecurity: &github.AdvancedSecurity{
				Status: github.String("enabled"),
			},
			SecretScanning: &github.SecretScanning{
				Status: github.String("enabled"),
			},
		},
	}
	updatedRepo, _, err := client.Repositories.Edit(context.Background(), org, name, &repo)
	if err != nil {
		log.Fatal("unable to enable Advanced Security")
	}
	fmt.Printf("Advanced Security: %s\n", *updatedRepo.SecurityAndAnalysis.AdvancedSecurity.Status)
	fmt.Printf("Secret Scanning: %s\n", *updatedRepo.SecurityAndAnalysis.SecretScanning.Status)
}

No matter if I sleep the 5 seconds or not, both run print

Advanced Security: enabled
Secret Scanning: enabled

github.com without sleeping

Image

github.com with sleeping

Image

Any idea how I can make sure that the repository is ready to enable Advanced Security features? (I'm not sure if other updates are affected as well)

Langage dominant
Go
Étoiles
11.3k
Forks
2.5k
Merge moyen
1 j 11 h
PR mergées (30 j)
43

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de google/go-github

Toutes les issues de google/go-github

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.