Add gerrit implementation

Change-Id: I293cea35572b051cd1d4a0466fe2fd5a06e81ad9
diff --git a/server/git/gerrit.go b/server/git/gerrit.go
index d795079..d1d029f 100644
--- a/server/git/gerrit.go
+++ b/server/git/gerrit.go
@@ -5,6 +5,7 @@
 	"context"
 	"encoding/json"
 	"fmt"
+	"log/slog"
 	"net/http"
 	"strconv"
 	"strings"
@@ -17,12 +18,14 @@
 	Password   string // Can be HTTP password or API token
 	BaseURL    string
 	HTTPClient *http.Client
+	Logger     *slog.Logger
 }
 
 // GerritPullRequestProvider implements PullRequestProvider for Gerrit
 type GerritPullRequestProvider struct {
 	config  GerritConfig
 	project string
+	logger  *slog.Logger
 }
 
 // NewGerritPullRequestProvider creates a new Gerrit pull request provider
@@ -30,10 +33,14 @@
 	if config.HTTPClient == nil {
 		config.HTTPClient = &http.Client{Timeout: 30 * time.Second}
 	}
+	if config.Logger == nil {
+		config.Logger = slog.Default()
+	}
 
 	return &GerritPullRequestProvider{
 		config:  config,
 		project: project,
+		logger:  config.Logger,
 	}
 }
 
@@ -145,6 +152,14 @@
 	}
 
 	url := fmt.Sprintf("%s/a/changes/", g.config.BaseURL)
+	
+	// Log change creation with structured data
+	g.logger.Info("Creating Gerrit change",
+		slog.String("url", url),
+		slog.String("project", g.project),
+		slog.String("subject", options.Title),
+		slog.String("branch", options.BaseBranch),
+		slog.String("topic", options.HeadBranch))
 	req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(jsonBody))
 	if err != nil {
 		return nil, fmt.Errorf("failed to create request: %w", err)